Submission #1296297

#TimeUsernameProblemLanguageResultExecution timeMemory
1296297hoseiintechMeteors (POI11_met)C++20
0 / 100
1434 ms10928 KiB
/* In The Name Of Allah */ #include <bits/stdc++.h> using namespace std; #define ll long long #define pb push_back #define mp make_pair #define all(x) x.begin() , x.end() #define ff first #define ss second #define pii pair<ll, ll> #define debug(a, b) cout << a << ' ' << b << '\n' #define wall cout << "-----------------------------" << '\n'; #define sep ' ' // #define int long long int void fastIO() { ios_base::sync_with_stdio(false); cin.tie(0), cout.tie(0); } const ll N = 5e5 + 5; const ll M = 1000 + 5; const ll SQ = 320; const ll LG = 32; const ll INF = 1e18; const ll MOD = 1e9 + 7; inline ll mod(ll x){ x %= MOD; return (x < 0 ? x + MOD : x);} // ll mpow(ll a, ll b){ // if (b == 0) // return 1LL; // ll ret = mpow(a, b >> 1); // ret = (ret * ret) % MOD; // if (b & 1) // ret = (ret * a) % MOD; // return ret; // } // ll bmm(ll a, ll b){ // return (b ? bmm(b, a % b) : a); // } // ll kmm(ll a, ll b){ // return (a*b/bmm(a, b)); // } // ll lgg2(ll x){ // int ans = 0; // int val = 1; // while(val < x){ // val *= 2; // ans++; // } // return ans; // } int p[N], num[N], nump[N], cc[N], ans[N]; vector<int> c[N]; void solve(){ int n, m; cin >> n >> m; for (int i = 1; i <= m; i++){ int ty; cin >> ty; c[ty].pb(i); } for (int i = 1; i <= n; i++) cin >> p[i]; int q; cin >> q; int tmp = q; int o = 1; vector<pair<pii, pii>> v; while (q--){ int l, r, x; cin >> l >> r >> x; // dayerei --> khat if (l <= r){ v.pb({{l, r}, {x, tmp-q}}); } else { v.pb({{l, m}, {x, tmp-q}}); v.pb({{1, r}, {x, tmp-q}}); } if (o == SQ || o == tmp){ // st diff vector<int> diff(m+2, 0); for (auto op: v){ l = op.ff.ff, r = op.ff.ss, x = op.ss.ff; diff[l] += x; diff[r+1] -= x; } for (int i = 1; i <= m; i++){ diff[i] += diff[i-1]; cc[i] += diff[i]; } for (int i = 1; i <= n; i++){ num[i] = 0; for (int id : c[i]) num[i] += cc[id]; } // en diff for (int i = 1; i <= n; i++){ if (num[i] >= p[i] && ans[i] == 0){ bool f = false; for (auto op: v){ if (f == true) break; l = op.ff.ff, r = op.ff.ss, x = op.ss.ff; int d = op.ss.ss; for (int id : c[i]){ if (f == true) break; if (id >= l && id <= r){ nump[i] += x; if (nump[i] >= p[i]){ ans[i] = d; f = true; } } } } } } for (int i = 1; i <= n; i++) nump[i] = num[i]; v.clear(); o = 0; } o++; } for (int i = 1; i <= n; i++){ if (ans[i] == 0){ cout << "NIE" << '\n'; } else { cout << ans[i] << '\n'; } } } int main() { fastIO(); int t = 1; //cin >> t; while (t--) 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...