Submission #1292641

#TimeUsernameProblemLanguageResultExecution timeMemory
1292641fairkrashFoehn Phenomena (JOI17_foehn_phenomena)C++20
100 / 100
284 ms18460 KiB
#include <bits/stdc++.h> #include <random> using namespace std; using ll = long long; using ld = long double; ll INF = 1e18; vector<pair<ll, ll>> tree; vector<ll> z; void build(ll v, ll vl, ll vr) { if (vr - vl == 1) { if (z[vl] < 0) { tree[v].second = z[vl]; } else { tree[v].first = z[vl]; } return; } ll mid = (vr + vl) / 2; build(v * 2, vl, mid); build(v * 2 + 1, mid, vr); tree[v].second = tree[v * 2].second + tree[v * 2 + 1].second; tree[v].first = tree[v * 2].first + tree[v * 2 + 1].first; } void change(ll v, ll vl, ll vr, ll ind, ll x) { if (vr - vl == 1) { z[vl] += x; tree[v].second = 0; tree[v].first = 0; if (z[vl] < 0) { tree[v].second = z[vl]; } else { tree[v].first = z[vl]; } return; } ll mid = (vr + vl) / 2; if (ind < mid) { change(v * 2, vl, mid, ind, x); } else { change(v * 2 + 1, mid, vr, ind, x); } tree[v].second = tree[v * 2].second + tree[v * 2 + 1].second; tree[v].first = tree[v * 2].first + tree[v * 2 + 1].first; } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); ll n, q, s, t; cin >> n >> q >> s >> t; ll a; cin >> a; for (ll i = 1; i < n + 1; i++) { ll b; cin >> b; z.push_back({b - a}); a = b; } tree.assign(n * 4, {}); build(1, 0, n); for (ll i = 0; i < q; i++) { ll v1, v2, v3; cin >> v1 >> v2 >> v3; change(1, 0, n, v1 - 1, v3); if (n != v2) { change(1, 0, n, v2, -v3); } cout << -tree[1].first * s - tree[1].second * t << endl; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...