Submission #1017935

#TimeUsernameProblemLanguageResultExecution timeMemory
1017935vjudge1Foehn Phenomena (JOI17_foehn_phenomena)C++17
100 / 100
272 ms12656 KiB
#include "bits/stdc++.h" #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> #define ordered_set tree <int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> #define nemeshay ios::sync_with_stdio(0), cin.tie(0), cout.tie(0); #define allr(pon) pon.rbegin(), pon.rend() #define all(pon) pon.begin(), pon.end() #define nosolve cout << "-1\n" #define YES cout << "YES\n" #define Yes cout << "Yes\n" #define pii pair <int, int> #define OK cout << "OK\n" #define Ok cout << "Ok\n" #define NO cout << "NO\n" #define No cout << "No\n" #define pf push_front #define int long long #define pb push_back #define sigma signed #define sc second #define fr first using namespace __gnu_pbds; using namespace std; const int N = 1e6 + 20, INF = 1e10 + 7; int a[N], d[N], pon[N]; sigma main(){ nemeshay int n, q, s, t, ans = 0; cin >> n >> q >> s >> t; for (int i = 0; i <= n; i++) cin >> a[i]; for (int i = 1; i <= n; i++) { d[i] = a[i] - a[i - 1]; if (d[i] > 0) ans -= d[i] * s; else ans -= d[i] * t; } while (q--) { int l, r, x; cin >> l >> r >> x; if (d[l] > 0) ans += d[l] * s; else ans += d[l] * t; if (r + 1 <= n) { if (d[r + 1] > 0) ans += d[r + 1] * s; else ans += d[r + 1] * t; } d[l] = d[l] + x; if(r + 1 <= n) d[r + 1] = d[r + 1] - x; if (d[l] > 0) ans -= d[l] * s; else ans -= d[l] * t; if (r + 1 <= n){ if(d[r + 1] > 0) ans -= d[r + 1] * s; else ans -= d[r + 1] * t; } cout << ans << endl; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...