답안 #626972

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
626972 2022-08-12T03:37:24 Z BackNoob Sjeckanje (COCI21_sjeckanje) C++14
55 / 110
2000 ms 5148 KB
#include <bits/stdc++.h>
#define ll long long
#define fi first
#define se second
#define endl '\n'
#define MASK(i) (1LL << (i))
#define ull unsigned long long
#define ld long double
#define pb push_back
#define all(x) (x).begin() , (x).end()
#define BIT(x , i) ((x >> (i)) & 1)
#define TASK "task"
#define sz(s) (int) (s).size()
 
using namespace std;
const int mxN = 5e5 + 227;
const int inf = 1e9 + 277;
const int mod = 1e9 + 7;
const ll infll = 1e18 + 7;
const int base = 307;
const int LOG = 20;
 
template <typename T1, typename T2> bool minimize(T1 &a, T2 b) {
	if (a > b) {a = b; return true;} return false;
}
template <typename T1, typename T2> bool maximize(T1 &a, T2 b) {
	if (a < b) {a = b; return true;} return false;
}
 
int n;
int q;
ll a[mxN];
ll dp[mxN][2];
 
void solve()
{
	cin >> n >> q;
	for(int i = 1; i <= n; i++) cin >> a[i];
 
	while(q--) {
		int l, r, x;
		cin >> l >> r >> x;
 
		for(int i = l; i <= r; i++) a[i] += x;
 
		for(int i = 1; i <= n; i++)
		for(int j = 0; j < 2; j++) dp[i][j] = -infll;
 
		dp[1][0] = dp[1][1] = 0;
		for(int i = 1; i < n; i++) {
			for(int j = 0; j < 2; j++) {
				if(dp[i][j] == -infll) continue;
				if(j == 0) {
					if(a[i] < a[i + 1]) maximize(dp[i + 1][0], dp[i][j] + a[i + 1] - a[i]);
				}
				if(j == 1) {
					if(a[i] > a[i + 1]) maximize(dp[i + 1][1], dp[i][j] + a[i] - a[i + 1]);
				}
				maximize(dp[i + 1][0], dp[i][j]);
				maximize(dp[i + 1][1], dp[i][j]);

			}
		}
		cout << max(dp[n][0], dp[n][1]) << endl;
	}
}
 
int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);

    int tc = 1;
    //cin >> tc;
    while(tc--) {
    	solve();
    }
    return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 340 KB Output is correct
2 Correct 1 ms 340 KB Output is correct
3 Correct 1 ms 340 KB Output is correct
4 Correct 1 ms 340 KB Output is correct
5 Correct 1 ms 340 KB Output is correct
6 Correct 1 ms 340 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 340 KB Output is correct
2 Correct 1 ms 340 KB Output is correct
3 Correct 1 ms 340 KB Output is correct
4 Correct 1 ms 340 KB Output is correct
5 Correct 1 ms 340 KB Output is correct
6 Correct 1 ms 340 KB Output is correct
7 Correct 89 ms 408 KB Output is correct
8 Correct 116 ms 424 KB Output is correct
9 Correct 117 ms 412 KB Output is correct
10 Correct 98 ms 540 KB Output is correct
11 Correct 93 ms 408 KB Output is correct
12 Correct 80 ms 340 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 340 KB Output is correct
2 Correct 1 ms 340 KB Output is correct
3 Correct 1 ms 340 KB Output is correct
4 Correct 1 ms 340 KB Output is correct
5 Correct 1 ms 340 KB Output is correct
6 Correct 1 ms 340 KB Output is correct
7 Correct 89 ms 408 KB Output is correct
8 Correct 116 ms 424 KB Output is correct
9 Correct 117 ms 412 KB Output is correct
10 Correct 98 ms 540 KB Output is correct
11 Correct 93 ms 408 KB Output is correct
12 Correct 80 ms 340 KB Output is correct
13 Execution timed out 2083 ms 5148 KB Time limit exceeded
14 Halted 0 ms 0 KB -