题目大意:中文
注释代码:
/*
* Problem ID : NPOJ 1066 找气球
* Author : Lirx.t.Una
* Language : C++
* Run Time : 163
* Run Memory : 2076
*/
#include <algorithm>
#include <iostream>
#include <cstdio>
//气球最大个数
#define MAXN 100001
using namespace std;
int a[MAXN];//存放每个气球的编号,下标从1开始取
int
main() {
int n, q;//n个气球,q此询问
int i;//计数变量
int qi;//当前询问的次数
int num;//每次查询的气球的编号
int lft, rht;//二分查找区间
scanf("%d%d", &n, &q);
for ( i = 1; i <= n; i++ ) scanf("%d", a + i);
sort(a + 1, a + n + 1);
qi = 0;
while ( q-- ) {
scanf("%d", &num);
printf("Query #%d: ", ++qi);
lft = lower_bound(a + 1, a + n + 1, num) - a;
rht = upper_bound(a + 1, a + n + 1, num) - a - 1;
if ( lft > rht ) puts("None.");
else if ( lft == rht ) printf("%d\n", lft);
else printf("[%d, %d]\n", lft, rht);
}
return 0;
}
无注释代码:
#include <algorithm>
#include <iostream>
#include <cstdio>
#define MAXN 100001
using namespace std;
int a[MAXN];
int
main() {
int n, q;
int i;
int qi;
int num;
int lft, rht;
scanf("%d%d", &n, &q);
for ( i = 1; i <= n; i++ ) scanf("%d", a + i);
sort(a + 1, a + n + 1);
qi = 0;
while ( q-- ) {
scanf("%d", &num);
printf("Query #%d: ", ++qi);
lft = lower_bound(a + 1, a + n + 1, num) - a;
rht = upper_bound(a + 1, a + n + 1, num) - a - 1;
if ( lft > rht ) puts("None.");
else if ( lft == rht ) printf("%d\n", lft);
else printf("[%d, %d]\n", lft, rht);
}
return 0;
}