답안 #950401

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
950401 2024-03-20T09:24:16 Z vjudge1 3단 점프 (JOI19_jumps) C++17
19 / 100
406 ms 150196 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 >= l[j]-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 2396 KB Output is correct
2 Correct 1 ms 3164 KB Output is correct
3 Correct 1 ms 3160 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 2396 KB Output is correct
2 Correct 1 ms 3164 KB Output is correct
3 Correct 1 ms 3160 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 363 ms 150100 KB Output is correct
12 Correct 377 ms 149888 KB Output is correct
13 Correct 366 ms 149840 KB Output is correct
14 Correct 375 ms 150040 KB Output is correct
15 Correct 406 ms 150196 KB Output is correct
16 Correct 375 ms 149436 KB Output is correct
17 Correct 367 ms 149332 KB Output is correct
18 Correct 383 ms 149436 KB Output is correct
19 Correct 368 ms 150112 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 19 ms 7772 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 2396 KB Output is correct
2 Correct 1 ms 3164 KB Output is correct
3 Correct 1 ms 3160 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 363 ms 150100 KB Output is correct
12 Correct 377 ms 149888 KB Output is correct
13 Correct 366 ms 149840 KB Output is correct
14 Correct 375 ms 150040 KB Output is correct
15 Correct 406 ms 150196 KB Output is correct
16 Correct 375 ms 149436 KB Output is correct
17 Correct 367 ms 149332 KB Output is correct
18 Correct 383 ms 149436 KB Output is correct
19 Correct 368 ms 150112 KB Output is correct
20 Incorrect 19 ms 7772 KB Output isn't correct
21 Halted 0 ms 0 KB -