답안 #950407

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
950407 2024-03-20T09:27:39 Z vjudge1 3단 점프 (JOI19_jumps) C++17
19 / 100
4000 ms 150124 KB
#include<bits/stdc++.h>

using namespace std;

const int N = (int)5e5+7;
const int M = (int)2e5+7;
const int inf = (int)1e9+7;

int n, q, a[N];
int dp[5003][5003], mx[5003][5003];
pair<int, int> suf[N];
int l[N], r[N];

void solve3() {
	cin >> q >> q >> q;
	for(int i = n; i >= 1; --i) {
		suf[i] = max(suf[i+1], {a[i], i});
	}                                  	
	stack<int> st;
	for(int i = 1; i <= n; ++i) {
		l[i] = i;
		while(!st.empty() && a[st.top()]<=a[i]) {
		    l[i]=l[st.top()];
			st.pop();
		}
		st.push(i);
	}
	while(!st.empty()) {
		continue;
	}
	for(int i = n; i >= 1; --i) {
		r[i] = i;
		while(!st.empty() && a[st.top()]<=a[i]) {
			r[i] = r[st.top()];
			st.pop();
		}
	}
	int ans = 0;
	for(int j = 2; j < n; ++j) {
		for(int i = l[j]-1; i >= 1; --i) {
			int o = (j-i);
			if(i>0 && r[i]<j && j+o <= n) {
				ans = max(ans, a[i]+a[j]+suf[j+o].first);
			}
		}
	}		
	cout << ans;
}

int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(0);
	cin >> n;
	for(int i = 1; i <= n; ++i) {
		cin >> a[i];
	} 
	if(n>5000) {
		solve3();
		return 0;
	}
	for(int i = 1; i <= n; ++i) {
		for(int j = i; j <= n; ++j) {
			mx[i][j] = max(mx[i][j-1], a[j]);
		}
	}
	for(int len = 3; len <= n; ++len) {
		for(int i = 1; i <= n-len+1; ++i) {
			int j = i+len-1;
			dp[i][j]=max(dp[i+1][j], dp[i][j-1]);
			int cur = a[i]+a[j];
			int m = (i+j)/2;
			cur += mx[i+1][m];
			dp[i][j] = max(dp[i][j], cur);
		}
	}
	cin >> q;
	while(q--) {
		int l, r;
		cin >> l >> r;
		cout << dp[l][r] << "\n";
	}
    return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 2392 KB Output is correct
2 Correct 1 ms 3416 KB Output is correct
3 Correct 1 ms 3164 KB Output is correct
4 Correct 1 ms 3164 KB Output is correct
5 Correct 1 ms 3164 KB Output is correct
6 Correct 1 ms 3164 KB Output is correct
7 Correct 1 ms 3164 KB Output is correct
8 Correct 1 ms 3164 KB Output is correct
9 Correct 1 ms 3164 KB Output is correct
10 Correct 1 ms 3164 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 2392 KB Output is correct
2 Correct 1 ms 3416 KB Output is correct
3 Correct 1 ms 3164 KB Output is correct
4 Correct 1 ms 3164 KB Output is correct
5 Correct 1 ms 3164 KB Output is correct
6 Correct 1 ms 3164 KB Output is correct
7 Correct 1 ms 3164 KB Output is correct
8 Correct 1 ms 3164 KB Output is correct
9 Correct 1 ms 3164 KB Output is correct
10 Correct 1 ms 3164 KB Output is correct
11 Correct 360 ms 150048 KB Output is correct
12 Correct 388 ms 150092 KB Output is correct
13 Correct 351 ms 150052 KB Output is correct
14 Correct 366 ms 150004 KB Output is correct
15 Correct 366 ms 150124 KB Output is correct
16 Correct 358 ms 149328 KB Output is correct
17 Correct 358 ms 149260 KB Output is correct
18 Correct 355 ms 149332 KB Output is correct
19 Correct 359 ms 149840 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 4038 ms 7772 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 2392 KB Output is correct
2 Correct 1 ms 3416 KB Output is correct
3 Correct 1 ms 3164 KB Output is correct
4 Correct 1 ms 3164 KB Output is correct
5 Correct 1 ms 3164 KB Output is correct
6 Correct 1 ms 3164 KB Output is correct
7 Correct 1 ms 3164 KB Output is correct
8 Correct 1 ms 3164 KB Output is correct
9 Correct 1 ms 3164 KB Output is correct
10 Correct 1 ms 3164 KB Output is correct
11 Correct 360 ms 150048 KB Output is correct
12 Correct 388 ms 150092 KB Output is correct
13 Correct 351 ms 150052 KB Output is correct
14 Correct 366 ms 150004 KB Output is correct
15 Correct 366 ms 150124 KB Output is correct
16 Correct 358 ms 149328 KB Output is correct
17 Correct 358 ms 149260 KB Output is correct
18 Correct 355 ms 149332 KB Output is correct
19 Correct 359 ms 149840 KB Output is correct
20 Execution timed out 4038 ms 7772 KB Time limit exceeded
21 Halted 0 ms 0 KB -