从0开始的数轴,便指定了m(m<=1000000)个线段[l, r],然后给出q(q<=1000000)询问,一个区间段[a, b]内是不是全部被线段覆盖.
输入格式:
第一行是一个整数m,表示他指定的幸运线段的个数
接下来m行,每行是两个正整数l,r(0<=l<r<=1000000),表示一个幸运线段.
接下来一行是一个整数q(q<=1000000),表示询问的个数.
接下来q行,每行两个正整数a,b,(0<=a<b<=1000000)表示一个去区间段.
输出格式:
针对每次查询,如果该区间段完全被幸运线段覆盖,就输出"GoodLuck!"(不含引号),否则输出"No!"(不含引号)
输入样例:
在这里给出一组输入。例如:
4 0 2 3 4 3 5 5 6 3 1 2 1 3 3 6
输出样例:
在这里给出相应的输出。例如:
GoodLuck!
No!
GoodLuck!
n,m这种可以用cin
大量输入用cin会超时
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
typedef long long ll;
const int maxn = 1e6+5;
int dif[maxn];
int a[maxn];
int main(){
int m;
int l,r;
cin >> m;
while(m--){
scanf("%d %d", &l, &r);
dif[++l]++;
dif[++r]--;
}
for(int i=1; i<maxn; i++)
a[i] = dif[i] + a[i-1];
for(int i=0; i<maxn; i++)
if(a[i]) a[i] = 1;
for(int i=1; i<maxn; i++)
a[i] += a[i-1];
int q;
cin >> q;
while(q--){
scanf("%d %d", &l, &r);
if(r-l == a[r]-a[l])
puts("GoodLuck!");
else
puts("No!");
}
return 0;
}