Submission #854914

#TimeUsernameProblemLanguageResultExecution timeMemory
854914vjudge1Triple Jump (JOI19_jumps)C++17
5 / 100
198 ms524292 KiB
#include<bits/stdc++.h> using namespace std; #define int long long #define ll long long #define pii pair<int,int> #define F first #define S second #define endl '\n' #define pb push_back #define sz(a) (int)a.size() #define all(a) a.begin(),a.end() const int mod = 1e9 + 7; const int N = 5003; const ll inf = 1e18; int mx[N][N]; int suf[N]; int a[N]; int ans[N][N]; int dp[N][N]; int32_t main(){ ios_base::sync_with_stdio(0);cin.tie(0); int n; cin >> n; for (int i=1;i<=n;i++){ cin >> a[i]; mx[i][i] = a[i]; } for (int i=1;i<=n;i++){ for (int j=i+1;j<=n;j++){ mx[i][j] = max(mx[i][j-1], mx[i][j]); } } for (int i=1;i<=n;i++){ dp[i][i+1] = a[i]+a[i+1]; } for (int i=1;i<=n;i++){ for (int j=i+2;j<=n;j++){ dp[i][j] = max(dp[i][j-1], a[j]+mx[i][j-1]); } } for (int l=1;l<=n-1;l++){ for (int r=l+1;r<=n;r++){ int c = r + (r-l); suf[c] = max(dp[l][r], suf[c]); } for (int i=1;i<=n;i++){ suf[i] = max(suf[i], suf[i-1]); } for (int r=l+2;r<=n;r++){ ans[l][r] = max(ans[l][r-1], suf[r]+a[r]); } memset(suf, 0, sizeof(suf)); } for (int i=1;i<=n;i++){ for (int j=i;j>=1;j--){ ans[j][i] = max(ans[j+1][i], ans[j][i]); //cout << i << ' ' << j << ' ' << ans[i][j] << endl; } } int q; cin >> q; while (q--){ int l, r; cin >> l >> r; cout << ans[l][r] << endl; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...