제출 #1224798

#제출 시각아이디문제언어결과실행 시간메모리
1224798TitanicXDzzMeteors (POI11_met)C++20
24 / 100
3 ms1352 KiB
#include<bits/stdc++.h> using namespace std; int a[1010]; int l[1010]; int r[1010]; int ll[1010]; int rr[1010]; int val[1010]; vector<int> v[1010]; queue<int> q[1010]; long long sumi[1010]; int m; void update(int idx,int val){ while(idx<=m){ sumi[idx]+=val; idx+=idx&-idx; } return; } long long read(int idx){ long long ans=0; while(idx>=1){ ans+=sumi[idx]; idx-=idx&-idx; } return(ans); } 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...