Submission #512700

#TimeUsernameProblemLanguageResultExecution timeMemory
512700kartelSjeckanje (COCI21_sjeckanje)C++14
55 / 110
55 ms3096 KiB
#include <bits/stdc++.h> #define blue 0 #define red 1 #define purple 2 #define pb push_back #define F first #define S second #define sz(x) (int)x.size() #define el "\n" using namespace std; typedef long long ll; const int N = 1e5 + 500; ll a[N], f[N][2], b[N]; int n, q; int main() { cin >> n >> q; for (int i = 1; i <= n; i++) { cin >> a[i]; } for (int i = 1; i < n; i++) { b[i] = a[i + 1] - a[i]; } while (q--) { int l, r, x; cin >> l >> r >> x; b[l - 1] += x; b[r] -= x; for (int i = 1; i <= n; i++) { for (int j = 0; j < 2; j++) { f[i][j] = -1e18; } } f[1][0] = 0; f[1][1] = abs(b[1]); for (int i = 2; i < n; i++) { if ((b[i - 1] < 0 && b[i] < 0) || (b[i - 1] > 0 && b[i] > 0)) { f[i][1] = max(f[i][1], f[i - 1][1] + abs(b[i])); } f[i][1] = max(f[i - 1][0] + abs(b[i]), f[i][1]); f[i][0] = max(f[i - 1][0], f[i - 1][1]); } cout << max(f[n - 1][0], f[n - 1][1]) << el; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...