#include #include #include #include #include #include #include using namespace std; long long readInt(long long l,long long r,char endd){ long long x=0; int cnt=0; int fi=-1; bool is_neg=false; while(true){ char g=getchar(); if(g=='-'){ assert(fi==-1); is_neg=true; continue; } if('0'<=g && g<='9'){ x*=10; x+=g-'0'; if(cnt==0){ fi=g-'0'; } cnt++; assert(fi!=0 || cnt==1); assert(fi!=0 || is_neg==false); assert(!(cnt>19 || ( cnt==19 && fi>1) )); } else if(g==endd){ if(is_neg){ x= -x; } assert(l<=x && x<=r); return x; } else { cout<<"GE: "<<(int)g< > > hh; map > >::iterator ii; /* int arr_comp[400400],c=0; int compress(int x){ int l=-1,r=c; while(r-l>1){ int mid=(r+l)/2; if(arr_comp[mid] <= x){ l=mid; } else { r=mid; } } return l; } int sgt[1601000]; void update(int nd,int l,int r,int ind,int val){ if(l==r){ sgt[nd]= val; return; } int mid=(r+l)/2; if(ind<=mid){ update(2*nd,l,mid,ind,val); } else { update(2*nd+1,mid+1,r,ind,val); } sgt[nd] = sgt[2*nd]+sgt[2*nd+1]; } */ bool chk1(){ for(ii=hh.begin();ii!=hh.end();ii++){ vector > y=ii->second; sort(y.begin(),y.end()); int si=y.size(); for(int i=0;i= y[i+1].first ){ return false; } } } return true; } struct evt{ bool is_query; int l,r; int ind; int x; }; int type(evt a){ if(!a.is_query && a.ind <0){ return 3; } if(a.is_query){ return 2; } if(!a.is_query && a.ind > 0){ return 1; } } bool operator<(evt a,evt b){ if(a.x != b.x)return a.x< b.x; return type(a) < type(b); } evt A[1001001]; int u=0; set g; set::iterator jj; bool check2(){ u=0; g.clear(); for(int i=0;i0){ g.insert(A[i].ind); } else{ g.erase(-A[i].ind); } } } g.clear(); u=0; for(int i=0;i0){ g.insert(A[i].ind); } else{ g.erase(-A[i].ind); } } } return true; } pair B[100100]; int t=0; int get_ans(int L,int R){ R++; for(int i=0;i V; int ans=0; while(L r2[i]){ swap(r1[i],r2[i]); } if(c1[i] > c2[i]){ swap(c1[i],c2[i]); } int rr1=max(r1[i],br1); int cc1=max(c1[i],bc1); int rr2=min(r2[i],br2); int cc2=min(c2[i],bc2); assert(!(rr1<=rr2 && cc1<=cc2)); } t=0; for(int i=0;im){ cout<<-1<