Submission #1224793

#TimeUsernameProblemLanguageResultExecution timeMemory
1224793TitanicXDzz새로운 문제 (POI11_met)C++20
0 / 100
55 ms131072 KiB
#include<bits/stdc++.h> using namespace std; int a[300010]; int l[300010]; int r[300010]; int ll[300010]; int rr[300010]; int val[300010]; vector<int> v[300010]; queue<int> q[300010]; long long sumi[300010]; int m; void update(int idx,int val){ sumi[idx]+=val; if(idx+(idx&(-idx))<=m) update(idx+(idx&(-idx)),val); return; } long long read(int idx){ if(idx-(idx&(-idx))>=1) return(sumi[idx]+read(idx-(idx&(-idx)))); return(sumi[idx]); } signed main(){ ios_base::sync_with_stdio(0);cin.tie(0); int n; cin>>n>>m; for(int i=1;i<=m;i++){ int x; cin>>x; v[x].push_back(i); } for(int i=1;i<=n;i++) cin>>a[i]; int k; cin>>k; for(int i=1;i<=k;i++){ cin>>l[i]>>r[i]>>val[i]; } for(int i=1;i<=n;i++){ ll[i]=1; rr[i]=k+1; q[(ll[i]+rr[i])/2].push(i); } for(int iii=1;iii<=20;iii++){ for(int i=0;i<=m+1;i++){ sumi[i]=0; } for(int i=1;i<=k;i++){ if(l[i]<=r[i]){ update(l[i],val[i]); update(r[i]+1,-val[i]); } else{ update(l[i],val[i]); update(1,val[i]); update(r[i]+1,-val[i]); } while(q[i].empty()==0){ long long sumo=0; for(auto g:v[q[i].front()]) sumo+=read(g); if(sumo<a[q[i].front()]) ll[q[i].front()]=i+1; else rr[q[i].front()]=i; if(ll[q[i].front()]<rr[q[i].front()]) q[(ll[q[i].front()]+rr[q[i].front()])/2].push(q[i].front()); q[i].pop(); } } } for(int i=1;i<=n;i++){ if(ll[i]>k) cout<<"NIE\n"; else cout<<ll[i]<<"\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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...