제출 #849979

#제출 시각아이디문제언어결과실행 시간메모리
849979nnin새로운 문제 (POI11_met)C++14
24 / 100
6103 ms34720 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, a; }; struct C{ int l, r; }; int n, m, p[300003], q; P predict[300003]; vector<int> own[300003]; C cur[300003]; int fenwick[600003]; void update(int idx, int val) { while(idx<=2*m) { fenwick[idx] += val; idx += (idx & -idx); } } int query(int idx) { int 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); } } } vector<int> mid[300003]; queue<int> qu; bool inq[300003]; int 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_back(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); for(int state:mid[md]) { int 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_back(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; } } } mid[md].clear(); } 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...