Submission #255832

#TimeUsernameProblemLanguageResultExecution timeMemory
255832uacoder123Examination (JOI19_examination)C++14
0 / 100
2954 ms305140 KiB
#include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> using namespace std; using namespace __gnu_pbds; #define F first #define S second #define FOR(i,a,b) for (auto i = (a); i <= (b); ++i) #define NFOR(i,a,b) for(auto i = (a); i >= (b); --i) #define all(x) (x).begin(), (x).end() #define sz(x) int(x.size()) #define mp(i,a) make_pair(i,a) #define pb(a) push_back(a) #define bit(x,b) (x&(1LL<<b)) typedef long long int lli; typedef pair <lli,lli> ii; typedef pair <lli,ii> iii; typedef vector <lli> vi; typedef tree< ii, null_type, less<ii>, rb_tree_tag, tree_order_statistics_node_update> ordered_set; ordered_set segt[16*100000+1]; lli n,q,co=1; void up(lli node,lli l,lli r,lli in,lli v) { segt[node].insert(mp(v,co)); co++; lli m=(l+r)/2; if(l!=r) { if(in<=m) up(2*node+1,l,m,in,v); else up(2*node+2,m+1,r,in,v); } } lli query(lli node,lli l,lli r,lli s,lli e,lli v) { if(r<s||l>e) return(0); if(l>=s&&r<=e) return segt[node].size()-segt[node].order_of_key(mp(v,0)); lli m=(l+r)/2; lli q1=query(2*node+1,l,m,s,e,v),q2=query(2*node+2,m+1,r,s,e,v); return(q1+q2); } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cin>>n>>q; set<lli> v; unordered_map<lli,lli> m; ii s[n]; pair<ii,lli> qu[q]; for(lli i=0;i<n;++i) { cin>>s[i].F>>s[i].S; v.insert(s[i].F); v.insert(s[i].F+s[i].S); } for(lli i=0;i<q;++i) { cin>>qu[i].F.F>>qu[i].F.S>>qu[i].S; v.insert(qu[i].F.F); v.insert(qu[i].S); } auto it=v.begin(); lli c=0,c1=0; while(it!=v.end()) { m[(*it)]=c; c++; it++; } vector<ii> st[c]; vector<iii> que[c]; for(lli i=0;i<n;++i) { lli su=s[i].F+s[i].S; s[i].F=m[s[i].F]; st[m[su]].pb(mp(s[i].F,s[i].S)); } for(lli i=0;i<q;++i) { qu[i].F.S=m[qu[i].F.S]; qu[i].F.F=m[qu[i].F.F]; que[qu[i].S].pb(mp(i,mp(qu[i].F.F,qu[i].F.S))); } lli ans[q]={}; for(lli i=c-1;i>=0;--i) { for(lli j=0;j<st[i].size();++j) up(0,0,c-1,st[i][j].F,st[i][j].S); for(lli j=0;j<que[i].size();++j) ans[que[i][j].F]=query(0,0,c-1,que[i][j].S.F,c-1,que[i][j].S.S); } for(lli i=0;i<q;++i) cout<<ans[i]<<endl; return(0); }

Compilation message (stderr)

examination.cpp: In function 'int main()':
examination.cpp:98:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(lli j=0;j<st[i].size();++j)
                 ~^~~~~~~~~~~~~
examination.cpp:100:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(lli j=0;j<que[i].size();++j)
                 ~^~~~~~~~~~~~~~
examination.cpp:74:11: warning: unused variable 'c1' [-Wunused-variable]
   lli c=0,c1=0;
           ^~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...