Submission #497058

#TimeUsernameProblemLanguageResultExecution timeMemory
497058Ierus새로운 문제 (POI11_met)C++17
74 / 100
3302 ms65540 KiB
#include<bits/stdc++.h> using namespace std; #define F first #define S second #define sz size() #define pb push_back #define int long long #define all(x) (x).begin(),(x).end() #define NFS ios_base::sync_with_stdio(0) , cin.tie(0) , cout.tie(0) ; const int N = 3e5+5; int n, m, que, t[N<<2]; void U(int l, int r, int val, int v, int tl, int tr){ if(tl > r || tr < l) return; if(l <= tl && tr <= r){ t[v] += val; return; } int tm = (tl + tr) >> 1; U(l,r,val,v<<1,tl,tm); U(l,r,val,v<<1|1,tm+1,tr); } int G(int pos, int v, int l, int r){ if(l == r) return t[v]; int m = (l + r) >> 1; if(pos <= m) return G(pos,v<<1,l,m) + t[v]; else return G(pos,v<<1|1,m+1,r) + t[v]; } vector<int> g[N], ans(N, -1), tocheck[N];; int p[N], Q[N], L[N], R[N]; struct{int l, r, a;}q[N]; signed main(){ NFS; cin >> n >> m; for(int i = 1; i <= m; ++i){ int x; cin >> x; g[x].pb(i); } for(int i = 1; i <= n; ++i){ cin >> p[i]; } cin >> que; for(int i = 1; i <= que; ++i){ cin >> q[i].l >> q[i].r >> q[i].a; } for(int i = 1; i <= n; ++i){ L[i] = 1, R[i] = que+1; } bool ok = 1; while(ok){ ok = false; memset(t, 0, sizeof(t)); for(int i = 1; i <= n; ++i){ if(L[i] != R[i]){ tocheck[(L[i]+R[i])/2].pb(i); } } for(int i = 1; i <= que; ++i){ if(q[i].l > q[i].r){ U(q[i].l, m, q[i].a, 1, 1, m); U(1, q[i].r, q[i].a, 1, 1, m); }else{ U(q[i].l, q[i].r, q[i].a, 1, 1, m); } while(!tocheck[i].empty()){ ok = true; int id = tocheck[i].back(); tocheck[i].pop_back(); int sum = 0; for(auto x : g[id]){ sum += G(x, 1, 1, m); if(sum >= p[id]){ break; } } if(sum >= p[id]){ ans[id] = i; R[id] = i; }else L[id] = i + 1; } } } for(int i = 1; i <= n; ++i){ if(L[i] > que) cout << "NIE\n"; else cout << ans[i] << '\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...