제출 #702570

#제출 시각아이디문제언어결과실행 시간메모리
702570boris_mihov메기 농장 (IOI22_fish)C++17
0 / 100
46 ms8104 KiB
#include "fish.h" #include <algorithm> #include <iostream> #include <cassert> #include <numeric> #include <vector> typedef long long llong; const int MAXN = 300 + 10; int n, m; int t[MAXN][MAXN]; bool bl[MAXN][10][10][10]; llong dp[MAXN][10][10][10]; llong f(int idx, int curr, int last1, int last2) { if (idx == n + 1) { return 0; } if (bl[idx][curr][last1][last2]) { return dp[idx][curr][last1][last2]; } bl[idx][curr][last1][last2] = true; dp[idx][curr][last1][last2] = f(idx + 1, 0, curr, last1); if (curr < 8) { llong add = t[curr + 1][idx + 1]; if (last2 < curr + 1 && last1 < idx - 1) { add += t[curr + 1][idx - 1]; } if (last1 >= curr + 1) { add -= t[curr + 1][idx]; } dp[idx][curr][last1][last2] = std::max(dp[idx][curr][last1][last2], f(idx, curr + 1, last1, last2) + add); } return dp[idx][curr][last1][last2]; } llong max_weights(int N, int M, std::vector <int> X, std::vector <int> Y, std::vector <int> W) { n = N; m = M; for (int i = 0 ; i < m ; ++i) { t[Y[i] + 1][X[i] + 1] = W[i]; } return f(1, 0, 0, 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...