23333,在扒了一天题解之后发现我竟然还能秒题,虽然这是个pj的sb题。。。
(排个序,然后upper_bound和lower_bound一用就行了(是不是有O(1)的查询方法啊??貌似要离散啊,一样蛋疼。。))
1 #include <bits/stdc++.h> 2 #define LL long long 3 #define inf 1e60 4 using namespace std; 5 inline int ra() 6 { 7 int x=0,f=1; char ch=getchar(); 8 while (ch<'0' || ch>'9') {if (ch=='-') f=-1; ch=getchar();} 9 while (ch>='0' && ch<='9') {x=x*10+ch-'0'; ch=getchar();} 10 return x*f; 11 } 12 13 const int maxn=100005; 14 15 int a[maxn],n,m; 16 int main() 17 { 18 n=ra(); m=ra(); for (int i=1; i<=n; i++) a[i]=ra(); 19 sort(a+1,a+n+1); 20 while (m--) 21 { 22 int x=ra(),y=ra(); 23 y=upper_bound(a+1,a+n+1,y)-a; 24 x=lower_bound(a+1,a+n+1,x)-a; 25 printf("%d ",y-x); 26 } 27 return 0; 28 }