# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
96225 | 2019-02-07T09:38:31 Z | Retro3014 | Gorgeous Pill (FXCUP3_gorgeous) | C++14 | 2 ms | 376 KB |
#include <iostream> #include <vector> #include <stdio.h> #include <algorithm> using namespace std; #define MAX_N 1000 typedef long long ll; int N; ll dp[MAX_N+1][MAX_N+1]; vector<int> C, D; int main(){ scanf("%d", &N); for(int i=0; i<N; i++){ int a; scanf("%d", &a); C.push_back(a); } for(int i=0; i<N; i++){ int a; scanf("%d", &a); D.push_back(a); } for(int L=N; L>1; L--){ for(int i=0; i+L-1<N; i++){ int j = i+L-1; if(C[i]==L){ dp[i+1][j] = max(dp[i+1][j], dp[i][j]+(ll)D[i]); }else{ dp[i+1][j] = max(dp[i+1][j], dp[i][j]); } if(C[j]==L){ dp[i][j-1] = max(dp[i][j-1], dp[i][j]+(ll)D[j]); }else{ dp[i][j-1] = max(dp[i][j-1], dp[i][j]); } } } for(int i=0; i<N; i++){ if(C[i]==1){ dp[i][i]+=(ll)D[i]; } printf("%d ", dp[i][i]); } return 0; }
Compilation message
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 2 ms | 376 KB | Output is correct |
2 | Correct | 2 ms | 376 KB | Output is correct |
3 | Incorrect | 2 ms | 376 KB | Output isn't correct |
4 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 2 ms | 376 KB | Output is correct |
2 | Correct | 2 ms | 376 KB | Output is correct |
3 | Incorrect | 2 ms | 376 KB | Output isn't correct |
4 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 2 ms | 376 KB | Output is correct |
2 | Correct | 2 ms | 376 KB | Output is correct |
3 | Incorrect | 2 ms | 376 KB | Output isn't correct |
4 | Halted | 0 ms | 0 KB | - |