Submission #1310052

#TimeUsernameProblemLanguageResultExecution timeMemory
1310052ladnooooFoehn Phenomena (JOI17_foehn_phenomena)C++20
0 / 100
274 ms12756 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define pb push_back const int maxN = 2e5 + 7; int a[maxN]; int n, q, s, T; int t[maxN * 4], lz[maxN * 4]; void build(int v, int tl, int tr) { if(tl == tr) { t[v] = a[tl]; } else { int tm = (tl + tr) / 2; build(v * 2, tl, tm); build(v * 2 + 1, tm + 1, tr); t[v] = t[v * 2] + t[v * 2 + 1]; } } void push(int v, int tl, int tr) { if(!lz[v]) return; t[v] += (tr - tl + 1) * lz[v]; if(tl != tr) { lz[v * 2] += lz[v]; lz[v * 2 + 1] += lz[v]; } else { a[tl] += lz[v]; } lz[v] = 0; } int get(int v, int tl, int tr, int idx) { push(v, tl, tr); if(tl == tr) return t[v]; int tm = (tl + tr) / 2; if(idx <= tm) return get(v * 2, tl, tm, idx); return get(v * 2 + 1, tm + 1, tr, idx); } void upd(int v, int tl, int tr, int l, int r, int val) { push(v, tl, tr); if(l > tr || r < tl) return; if(l <= tl && tr <= r) { lz[v] += val; push(v, tl, tr); return; } int tm = (tl + tr) / 2; upd(v * 2, tl, tm, l, r, val); upd(v * 2 + 1, tm + 1, tr, l, r, val); t[v] = t[v * 2] + t[v * 2 + 1]; } int get(int d) { if(d > 0) return -d * s; return -d * T; } void solve() { cin >> n >> q >> s >> T; for(int i = 0; i <= n; i++) { cin >> a[i]; } build(1, 1, n); int ans = 0; for(int i = 0; i < n; i++) { int val = a[i + 1] - a[i]; ans += get(val); } while(q--) { int l, r, x; cin >> l >> r >> x; get(1, 1, n, l); get(1, 1, n, r); int val = a[l] - a[l - 1]; ans -= get(val); if(r < n) { val = a[r + 1] - a[r]; ans -= get(val); } upd(1, 1, n, l, r, x); get(1, 1, n, l); get(1, 1, n, r); val = a[l] - a[l - 1]; ans += get(val); if(r < n) { val = a[r + 1] - a[r]; ans += get(val); } cout << ans << '\n'; } } signed main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); //freopen("input.txt", "r", stdin); 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...