# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1094777 | 2024-09-30T13:51:34 Z | manhlinh1501 | Sjeckanje (COCI21_sjeckanje) | C++17 | 1 ms | 344 KB |
#include<bits/stdc++.h> using namespace std; using i64 = long long; const int MAXN = 3e3 + 5; const i64 oo64 = 1e18 + 5; struct event { int l, r, x; event(int l = 0, int r = 0, int x = 0) : l(l), r(r), x(x) {} }; const int INC = 0; const int DEC = 1; int N, Q; i64 a[MAXN]; event query[MAXN]; i64 dp[MAXN][2]; void solve() { // for(int i = 1; i <= N; i++) cout << a[i] << " "; // cout << "\n"; memset(dp, -0x3f, sizeof dp); dp[0][INC] = dp[0][DEC] = 0; dp[1][INC] = dp[1][DEC] = 0; for(int i = 2; i <= N; i++) { if(a[i - 1] == a[i]) { dp[i][INC] = dp[i][DEC] = max(dp[i - 1][INC], dp[i - 1][DEC]); } else if(a[i - 1] < a[i]) { dp[i][INC] = max(dp[i - 1][INC], dp[i - 2][DEC]) + a[i] - a[i - 1]; } else if(a[i - 1] > a[i]) { dp[i][DEC] = max(dp[i - 1][DEC], dp[i - 2][INC]) + a[i - 1] - a[i]; } } // for(int i = 1; i <= N; i++) // cout << dp[i][INC] << " " << dp[i][DEC] << "\n"; // cout << "\n"; cout << max(dp[N][INC], dp[N][DEC]) << "\n"; } signed main() { if(fopen(".inp", "r")) { freopen(".inp", "r", stdin); freopen(".out", "w", stdout); } ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> N >> Q; for(int i = 1; i <= N; i++) cin >> a[i]; for(int i = 1; i <= Q; i++) { auto &[l, r, x] = query[i]; cin >> l >> r >> x; } for(int i = 1; i <= Q; i++) { const auto [l, r, x] = query[i]; for(int j = l; j <= r; j++) a[j] += x; solve(); } }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 1 ms | 344 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 1 ms | 344 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 1 ms | 344 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |