Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <algorithm>
- #define nmax 200002
- using namespace std;
- int n,t,v[nmax];
- int cb_st(int x)
- {
- int st = 1, dr = n, mijl;
- while(st < dr)
- {
- mijl = (st + dr) / 2;
- if(v[mijl] == x)
- {
- if(v[mijl - 1] == x)
- {
- int poz = mijl - 1;
- while(v[poz] == x)
- --poz;
- return poz + 1;
- }
- return mijl;
- }
- else
- if(v[mijl] < x && v[mijl + 1] > x)
- return mijl + 1;
- else
- if(v[mijl] < x)
- st = mijl + 1;
- else
- dr = mijl;
- }
- return st;
- }
- int cb_dr(int x)
- {
- int st = 1, dr = n, mijl;
- while(st < dr)
- {
- mijl = (st + dr) / 2;
- if(v[mijl] == x)
- {
- if(v[mijl + 1] == x)
- {
- int poz = mijl + 1;
- while(v[poz] == x)
- ++poz;
- return poz - 1;
- }
- return mijl;
- }
- else
- if(v[mijl] < x && v[mijl + 1] > x)
- return mijl;
- else
- if(v[mijl] < x)
- st = mijl + 1;
- else
- dr = mijl;
- }
- return st;
- }
- int main()
- { int i,ans,a,b,pa,pb;
- cin >> n >> t;
- for(i = 1; i <= n; ++i)
- cin >> v[i];
- sort(v + 1, v + n + 1);
- /*
- for(i = 1; i <= n; ++i)
- cout << v[i] <<' ';
- cout <<'\n';
- */
- for(i = 1; i <= t; ++i)
- {
- cin >> a >> b;
- // cout << cb_st(a) << ' ' << cb_dr(b) <<"\n";
- pb = cb_dr(b);
- pa = cb_st(a);
- ans = pb - pa + 1;
- if(pb == pa && v[pb] != b && v[pa] != a)
- cout << 0;
- else
- cout << ans;
- cout << '\n';
- // cout <<"************************\n";
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement