Advertisement
FHVirus

Untitled

Jan 29th, 2021
273
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.42 KB | None | 0 0
  1. #include<unistd.h>
  2. char OB[65536]; int OP;
  3. inline char RC(){static char buf[65536],*p=buf,*q=buf;return p==q&&(q=(p=buf)+read(0,buf,65536))==buf?-1:*p++;}
  4. inline int R(){static char c;int a;while((c=RC())<'0');a=c^'0';while((c=RC())>='0')a*=10,a+=c^'0';return a;}
  5. inline void W(int n){static char buf[12],p;if(n==0)OB[OP++]='0';p=0;while(n)buf[p++]='0'+(n%10),n/=10;for(--p;p>=0;--p)OB[OP++]=buf[p];OB[OP++]='\n';if(OP>65516)write(1,OB,OP),OP=0;}
  6.  
  7. #include<cstring>
  8. #include<algorithm>
  9. using namespace std;
  10.  
  11. #define FOR(i,n) for(int i = 0; i < n; ++i)
  12. #define FOO(i,a,b) for(int i = a; i <= b; ++i)
  13.  
  14. const int N = 1<<18;
  15. int n, m, a[N], id[N], ans[N], l[N], r[N];
  16.  
  17. struct segtree{
  18.     int val[N<<1];
  19.     void init(){
  20.         memset(val, -1, sizeof(val));
  21.     }
  22.     // void modify(int p, int v){
  23.     //  val[p += n] = v;
  24.     //  for(; p > 0; p >>= 1)
  25.     //      val[p>>1] = min(val[p], val[p^1]);
  26.     // }
  27.     // int query(int v){
  28.     //  return query(v, 1, 0, N);
  29.     // }
  30.     void modify(int p, int v){
  31.         val[p] = v;
  32.     }
  33.     int query(int v){
  34.         int ans = 0;
  35.         while(val[ans] >= v) ++ans;
  36.         return ans;
  37.     }
  38. } sgt;
  39.  
  40. int main(){
  41.     n = R(), m = R();
  42.     FOO(i,1,n) a[i] = R();
  43.     FOR(i,m) l[i] = R(), r[i] = R(), id[i] = i;
  44.     sort(id, id + m, [](int a, int b){ return r[a] < r[b];});
  45.     sgt.init();
  46.     int cur = 0;
  47.     FOR(i,m){
  48.         while(cur < r[id[i]]) sgt.modify(a[++cur], cur);
  49.         ans[id[i]] = sgt.query(l[id[i]]);
  50.     }
  51.     FOR(i,m) W(ans[i]);
  52.     write(1,OB,OP);
  53.     return 0;
  54. }
  55.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement