Submission #1128531

#TimeUsernameProblemLanguageResultExecution timeMemory
1128531rasbery303Meteors (POI11_met)C++20
0 / 100
6097 ms28676 KiB
#include <iostream> #include <vector> #include <cassert> using namespace std; using ll = long long int; const int maxn = 3e5+1; int n, m, k; ll tree[maxn]; vector<ll> a, p, check[maxn], own[maxn]; int ql[maxn], qr[maxn], l[maxn], r[maxn]; ll qval[maxn]; void update(int x, ll val){ while (x <= m){ tree[x] += val; x += (x&-x); } } void apply(int x){ if (ql[x] <= qr[x]){ update(ql[x], qval[x]); update(qr[x]+1, -qval[x]); } else { update(1, qval[x]); update(qr[x]+1, -qval[x]); update(ql[x], qval[x]); } } ll read(int x){ ll sum = 0; while(x>0){ sum += tree[x]; x -= (x&-x); } return sum; } int main(){ cin >> n >> m; a.resize(m+1), p.resize(n+1); for (int i = 1; i <= m; ++i){ cin >> a[i]; own[a[i]].push_back(i); } for (int i = 1; i <= n; ++i) cin >> p[i]; cin >> k; for (int i = 1; i <= n; ++i) cin >> ql[i] >> qr[i] >> qval[i]; for (int i = 1; i <= n; ++i){ l[i] = 1; r[i] = k+1; } bool ok = true; while (ok){ ok = false; for (int i = 0; i <= m; ++i) tree[i] = 0; for (int i = 1; i <= n; ++i){ if (l[i]!=r[i]){ int mid = (l[i]+r[i])>>1; check[mid].push_back(i); } } for (int q = 1; q <= k; ++q){ apply(q); while(!check[q].empty()){ ok = true; int id = check[q].back(); check[q].pop_back(); ll sum = 0; for (auto sec: own[id]){ sum += read(sec); if (sum >= p[id]) break; } if (sum >= p[id]) r[id] = q; else l[id] = q+1; } } } for (int i = 1; i <= n; ++i){ assert(l[i]==r[i]); if (l[i] <= k){ cout << l[i] << '\n'; } else { cout << "NIE\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...