谁帮我按我的想法把程序写出来
题目Description
N个人做一个游戏,游戏中每个人说了一句话(可能是真的也可能是假的)
第i个人说:“N个人中有至少有ai个,至多有bi个人说的是真话!”(i = 1, 2, 3…..n)你能推断出最多能有多少个人说的是真话吗?
1 <= N <= 100000;
0 <= ai<=bi<=1000000000;
Input
第一行为一个整数T,代表测试数据的组数;
每组数据以n开头,接下来有n行,每行两个整数ai,bi(代表第i个人说的);
Output
输出占一行。如果原问题有解,输出最多能有多少个人说的是真话;否则输出-1.
Sample Input
2
3
0 0
1 1
2 2
3
2 5
3 5
0 3
Sample Output
1
3
我的想法。
1建立一个2行n-1列的数组,第(0,i)个元素存放第i+1个人的至少值,第(1,i)个元素存放第i+1个人的之多值
2对这个数组以第一行的值从大到小进行排序,当(0,i)个元素的位置变化时,第(1,i)个元素也要变化,保持在前者下方对应。
3对第一行从第一个元素到最后一个进行扫描如果有(0,i)元素等于(0,i+1)元素,且(1,i)大于(1,i+1),则交换(1,i)和(1,i+1)的位置
4设i=0如(0,i)小于等于从(1,i)到(1,n-1)之间的最小值则人数为n-i,如不满足则,i=i+1,继续第四步,当i=n时则没有输出-1。