Submission #792054

#TimeUsernameProblemLanguageResultExecution timeMemory
792054ToniBUplifting Excursion (BOI22_vault)C++17
0 / 100
72 ms41316 KiB
#include <bits/stdc++.h> using namespace std; const int MAXN = 1000; const int K = MAXN * MAXN / 2; int m, L, a[MAXN]; int dp[MAXN][MAXN * MAXN / 2]; int main(){ cin >> m >> L; for(int i = 0; i < 2 * m + 1; ++i) cin >> a[i]; for(int i = 0; i < 2 * m + 1; ++i){ // dp[i][j] = max{dp[i - 1][j - x * (i - m)] + x} for(int j = 0; j < MAXN * MAXN / 2; ++j){ dp[i][j] = -1e9; for(int x = 0; x <= a[i]; ++x){ if(j - x * (i - m) >= 0){ if(i) dp[i][j] = max(dp[i][j], dp[i - 1][j - x * (i - m)] + x); else if(j - x * (i - m) == K) dp[i][j] = max(dp[i][j], x); } } } } if(dp[2 * m][L + K] < 0) cout << "impossible\n"; else cout << dp[2 * m][L + K]; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...