Submission #1264450

#TimeUsernameProblemLanguageResultExecution timeMemory
1264450XXBabaProBerkayFoehn Phenomena (JOI17_foehn_phenomena)C++20
0 / 100
107 ms3868 KiB
#include <bits/stdc++.h> using namespace std; #define F first #define S second #define PB push_back #define MP make_pair const int INF = 1e9 + 7; const int MOD = 998244353; using ll = long long; using pi = pair<int, int>; using pll = pair<ll, ll>; template<class T> using vec = vector<T>; int N, Q, S, T; vec<int> t; void update(int l, int r, int x) { for (l += N - 1, r += N - 1; l <= r; l /= 2, r /= 2) { if (l % 2 == 1) t[l++] += x; if (r % 2 == 0) t[r--] += x; } } int query(int p) { if (p == 0) return 0; p = min(p, N); int ans = 0; for (p += N - 1; p > 0; p /= 2) ans += t[p]; return ans; } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cin >> N >> Q >> S >> T; t.resize(N * 2); int ans = 0; for (int i = N - 1; i < N * 2; i++) { int x; cin >> x; if (i >= N) t[i] = x; ans += (t[i - 1] < t[i] ? S * (t[i - 1] - t[i]) : T * (t[i - 1] - t[i])); } while (Q--) { int l, r, x; cin >> l >> r >> x; int a = query(l - 1), b = query(l); int d1 = (a < b ? S * (a - b) : T * (a - b)); a = query(r), b = query(r + 1); int d2 = (a < b ? S * (a - b) : T * (a - b)); ans -= d1 + d2; update(l, r, x); a = query(l - 1), b = query(l); d1 = (a < b ? S * (a - b) : T * (a - b)); a = query(r), b = query(r + 1); d2 = (a < b ? S * (a - b) : T * (a - b)); ans += d1 + d2; cout << ans << '\n'; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...