Submission #1148380

#TimeUsernameProblemLanguageResultExecution timeMemory
1148380arkanefuryMeteors (POI11_met)C++17
74 / 100
109 ms73004 KiB
#include <bits/stdc++.h> #define pb push_back using namespace std; #define FOR(x, n, m, d) for(int x = n; x <= m; x += d) #define FORR(x, n, m, d) for(int x = n; x >= m; x -= d) #define nikita ios_base::sync_with_stdio(0), cin.tie(0); const int N = 3e5+150; int n,m,k,tt,ans,l, r, x, y, cnt; int b[N],block = 448, mod = 1e9+7, a[N], sum, root[N]; string str; vector<int>v[N]; struct{ int l, r, s; }t[N*17]; int siz = 1; int upd(int v, int l, int r, int val, int tl = 1, int tr = m){ int nv = ++siz; t[nv] = t[v]; if(l <= tl && tr <= r){ t[nv].s += val; return nv; } if(l > tr || tl > r)return v; int tm = (tl + tr) >> 1; t[nv].l = upd(t[nv].l, l, r, val, tl, tm); t[nv].r = upd(t[nv].r, l, r, val, tm+1, tr); return nv; } void get(int v, int pos, int tl = 1, int tr = m){ ans += t[v].s; ans = min(ans, (int)1e9); if(tl == tr){ return; } int tm = (tl + tr) >> 1; if( pos <= tm )get(t[v].l, pos, tl, tm); else get(t[v].r, pos, tm+1, tr); } void solve(){ nikita cin >> n >> m; FOR(i, 1, m, 1){ cin >> a[i]; v[a[i]].pb(i); } FOR(i, 1, n, 1)cin >> b[i]; cin >> k; FOR(i, 1, k, 1){ cin >> x >> y >> cnt; if(x <= y){ root[i] = upd(root[i-1], x, y, cnt); } else{ root[i] = upd(root[i-1], x, m, cnt); root[i] = upd(root[i], 1, y, cnt); } } FOR(i, 1, n, 1){ l = 1, r = k; int lp = 0; while(l <= r){ int md = (l + r) >> 1; ans = 0; for(auto j : v[i]){ get(root[md], j); } if(ans < b[i])l = md + 1, lp = md; else r = md - 1; } if(l == k + 1)cout << "NIE\n"; else cout << lp + 1 << '\n'; } } signed main() { nikita tt = 1; if(!tt)cin >> tt; FOR(i, 1, tt, 1){ solve(); } }
#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...