Submission #496351

#TimeUsernameProblemLanguageResultExecution timeMemory
496351ergaganMeteors (POI11_met)C++17
24 / 100
6091 ms65540 KiB
//я так много думал, что опять попал #include <bits/stdc++.h> #define all(x) x.begin(),x.end() #define pb push_back #define ppb pop_back #define pf push_front #define ppf pop_front #define f first #define s second #define left(v) v + v #define right(v) v + v + 1 #define ub upper_bound #define lb lower_bound using namespace std; typedef long long ll; //17 SEVENTEEN const long double Pi = acos(-1.0); const ll dx[] = {0,0,1,-1}; const ll dy[] = {1,-1,0,0}; const ll N = (ll) 1e6 + 17; const ll M = (ll) 5e3 + 69; const ll inf = (ll) 1e14 + 3; const ll mod = (ll) 1e9 + 7; ll sq(ll x) { return x * x; } ll zxc = 1, n, m, q, a[N]; ll l[N], r[N], x[N]; ll p[N], cur[N], lw[N], hg[N]; vector<ll> v[N], vq[N]; void upd(ll l, ll r, ll x, ll i) { if(l <= r) { for(ll i = 1; i <= n; i++) { ll lf = lb(all(v[i]), l) - v[i].begin(); ll rg = ub(all(v[i]), r) - v[i].begin(); if(rg - lf > 0) cur[i] += (rg - lf) * x; } } else { for(ll i = 1; i <= n; i++) { ll len = 0; len += (v[i].size() - 1) - (lb(all(v[i]), l) - v[i].begin()) + 1; len += ub(all(v[i]), r) - v[i].begin(); if(len > 0) cur[i] += len * x; } } } void solve() { cin >> n >> m; for(ll i = 1; i <= m; i++) { cin >> p[i]; v[p[i]].pb(i); } for(ll i = 1; i <= n; i++) { cin >> a[i]; } cin >> q; for(ll i = 1; i <= n; i++) lw[i] = 1, hg[i] = q + 1; for(ll i = 1; i <= q; i++) { cin >> l[i] >> r[i] >> x[i]; } ll ok = 1; while(ok) { ok = 0; // cout << "OK\n"; for(ll i = 1; i <= n; i++) cur[i] = 0; for(ll i = 1; i <= n; i++) { if(lw[i] != hg[i]) vq[(lw[i] + hg[i]) / 2].pb(i); } for(ll i = 1; i <= q; i++) { upd(l[i], r[i], x[i], i); while(!vq[i].empty()) { ok = 1; ll id = vq[i].back(); vq[i].pop_back(); if(cur[id] >= a[id]) hg[id] = i; else lw[id] = i + 1; } } } for(ll i = 1; i <= n; i++) { cout << (lw[i] <= q ? to_string(lw[i]) : "NIE") << "\n"; } } int main(/*Уверенно*/) { ios_base::sync_with_stdio(0); cin.tie(0); /* freopen(".in", "r", stdin); freopen(".out", "w", stdout); */ // cin >> zxc; while(zxc--) { solve(); } 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...