Submission #1186496

#TimeUsernameProblemLanguageResultExecution timeMemory
1186496elotelo966Inspections (NOI23_inspections)C++20
51 / 100
294 ms21928 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define OYY LLONG_MAX #define faster ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL); #define fi first #define se second #define FOR for(int i=1;i<=n;i++) #define mid (start+end)/2 #define pb push_back #define lim 500005 const int mod=1000000007; int n,m,q; int l[lim],r[lim],cev[lim]; map<int,int>mp; int pre[lim]; inline void solve(){ vector<pair<int,int>> buy; vector<pair<int,int>> tut; for(int i=1;i<=m;i++){ pre[i]=pre[i-1]+r[i]; } for(int i=1;i<=m;i++){ if(buy.size()==0){buy.pb({r[i],i});continue;} int cur=0; while(buy.size() && buy.back().fi<=r[i]){ int kac=buy.back().fi-cur; kac=min(kac,r[i]-cur); tut.pb({buy.back().fi-1+pre[i-1]-pre[buy.back().se],kac}); cur+=kac; buy.pop_back(); } if(buy.size()){ int kac=buy.back().fi-cur; kac=min(kac,r[i]-cur); //if(i==m)cout<<buy.back()<<" "<<cur<<" "<<cur2<<" "<<kac<<endl; tut.pb({buy.back().fi-1+pre[i-1]-pre[buy.back().se],kac}); } buy.pb({r[i],i}); } sort(tut.begin(),tut.end()); int cur_cev=0; for(auto a:tut){ cur_cev+=a.se; //cout<<a.fi<<" "<<a.se<<endl; } vector<pair<int,int>> qu; for(int i=1;i<=q;i++){ int x;cin>>x; qu.pb({x,i}); } sort(qu.begin(),qu.end()); int ptr=0; for(int i=0;i<q;i++){ while(cur_cev && qu[i].fi>tut[ptr].fi){ cur_cev-=tut[ptr].se; ptr++; } cev[qu[i].se]=cur_cev; } for(int i=1;i<=q;i++){ cout<<cev[i]<<" "; } cout<<'\n'; } int32_t main(){ faster cin>>n>>m>>q; for(int i=1;i<=m;i++)cin>>l[i]>>r[i]; if(n>2000){ solve(); return 0; } vector<int> tut; int ptr=0; for(int i=1;i<=m;i++){ for(int j=l[i];j<=r[i];j++){ if(mp.find(j)==mp.end())mp[j]=++ptr; else{ tut.pb(ptr-mp[j]); mp[j]=++ptr; } } } sort(tut.begin(),tut.end()); //for(auto a:tut)cout<<a<<" "; while(q--){ int x;cin>>x; int ind=lower_bound(tut.begin(),tut.end(),x)-tut.begin(); cout<<tut.size()-ind<<" "; } cout<<'\n'; return 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...
#Verdict Execution timeMemoryGrader output
Fetching results...