Submission #496998

#TimeUsernameProblemLanguageResultExecution timeMemory
496998Nalrimet새로운 문제 (POI11_met)C++17
100 / 100
4190 ms65536 KiB
#include <bits/stdc++.h> #define all(x) x.begin(),x.end() #define pb push_back #define ppb pop_back #define f first #define s second #define left(v) v + v #define right(v) v + v + 1 using namespace std; typedef long long ll; const ll N = (ll) 3e5 + 17; const ll M = (ll) 5e3 + 69; int n, m, q, a[N]; ll upd[N * 4]; int x[N], l[N], r[N]; int ql[N], qr[N]; vector<int> v[N], vq[N]; ll get(int v, int tl, int tr, int pos) { if(tl == tr) return upd[v]; int tm = (tl + tr) / 2; if(pos <= tm) return get(left(v), tl, tm, pos) + upd[v]; else return get(right(v), tm + 1, tr, pos) + upd[v]; } void update(int v, int tl, int tr, int ql, int qr, ll val) { if(tr < ql || qr < tl) return; if(ql <= tl && tr <= qr){ upd[v] += val; return; } int mid = (tl + tr) / 2; update(left(v), tl, mid, ql, qr, val); update(right(v), mid + 1, tr, ql, qr, val); } main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> n >> m; for(int i = 1, p; i <= m; i++) { cin >> p; v[p].pb(i); } for(int i = 1; i <= n; i++) cin >> a[i]; cin >> q; for(int i = 1; i <= n; i++) ql[i] = 1, qr[i] = q + 1; for(int i = 1; i <= q; i++) cin >> l[i] >> r[i] >> x[i]; int ok = 1; while(ok){ ok = 0; memset(upd, 0, sizeof(upd)); for(int i = 1; i <= n; i++) if(ql[i] != qr[i]) vq[(ql[i] + qr[i]) / 2].pb(i); for(int i = 1; i <= q; i++){ if(l[i] <= r[i]) update(1, 1, m, l[i], r[i], x[i]); else update(1, 1, m, l[i], m, x[i]), update(1, 1, m, 1, r[i], x[i]); for(int id : vq[i]){ ok = 1; ll sum = 0; for(int x : v[id]) { sum += get(1, 1, m, x); if(sum >= a[id]) break; } if(sum >= a[id]) qr[id] = i; else ql[id] = i + 1; } vq[i].clear(); } } for(int i = 1; i <= n; i++) { if(ql[i] == q + 1) cout << "NIE\n"; else cout << ql[i] << '\n'; } }

Compilation message (stderr)

met.cpp:43:2: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   43 |  main() {
      |  ^~~~
#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...