Submission #849998

#TimeUsernameProblemLanguageResultExecution timeMemory
849998nninMeteors (POI11_met)C++14
0 / 100
30 ms65536 KiB
#include<bits/stdc++.h> #define ll long long #define pii pair<int,int> #define f first #define s second using namespace std; struct P { int l, r; ll a; }; struct C{ int l, r; }; int n, m, q; ll p[300003]; P predict[300003]; vector<int> own[300003]; C cur[300003]; ll fenwick[600003]; void update(int idx, ll val) { while(idx<=2*m) { fenwick[idx] += val; idx += (idx & -idx); } } int query(int idx) { ll ret = 0; while(idx>0) { ret += fenwick[idx]; idx -= (idx & -idx); } return ret; } void makefenwick(int time) { for(int i=0;i<=m;i++) fenwick[i] = 0; for(int i=1;i<=time;i++) { update(predict[i].l, predict[i].a); update(predict[i].r+1, -predict[i].a); if(predict[i].r<predict[i].l) { update(1, predict[i].a); } } } queue<int> mid[300003]; queue<int> qu; bool inq[300003]; int32_t main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cin>>n>>m; for(int i=1;i<=m;i++) { int o; cin>>o; own[o].push_back(i); } for(int i=1;i<=n;i++) { cin>>p[i]; } cin>>q; for(int i=1;i<=q;i++) { cin>>predict[i].l>>predict[i].r>>predict[i].a; } for(int i=1;i<=n;i++) { cur[i] = {1, q+1}; mid[(2+q)/2].push(i); } qu.push((2+q)/2); inq[(2+q)/2] = 1; while(!qu.empty()) { int md = qu.front(); qu.pop(); inq[md] = 0; makefenwick(md); while(!mid[md].empty()) { int state = mid[md].front(); mid[md].pop(); ll ct = 0; for(int station:own[state]) { ct += query(station); } if(ct<p[state]) { cur[state].l = md+1; } else { cur[state].r = md; } if(cur[state].l<cur[state].r) { mid[(cur[state].l+cur[state].r)/2].push(state); if(!inq[(cur[state].l+cur[state].r)/2]) { qu.push((cur[state].l+cur[state].r)/2); inq[(cur[state].l+cur[state].r)/2] = 1; } } } } for(int i=1;i<=n;i++) { if(cur[i].l==q+1) cout<<"NIE\n"; else cout<<cur[i].l<<'\n'; } }
#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...