Submission #234768

#TimeUsernameProblemLanguageResultExecution timeMemory
234768super_j6Maja (COCI18_maja)C++14
88 / 110
173 ms16632 KiB
#include <iostream> #include <cstdio> #include <algorithm> #include <string.h> using namespace std; #define endl '\n' #define ll long long #define pi pair<int, int> #define f first #define s second const int maxn = 101; int n, m, sx, sy, k; ll a[maxn][maxn]; ll dp[maxn][maxn][maxn << 1]; int dx[4] = {1, 0, -1, 0}; int dy[4] = {0, 1, 0, -1}; bool works(int x, int y){ return x >= 0 && y >= 0 && x < n && y < m; } int main(){ ios::sync_with_stdio(0); cin.tie(0); cin >> n >> m >> sx >> sy >> k; sx--, sy--; for(int i = 0; i < n; i++) for(int j = 0; j < m; j++){ cin >> a[i][j]; } memset(dp, -1, sizeof(dp)); dp[sx][sy][0] = 0; for(int l = 0; l < n + m; l++) for(int i = 0; i < n; i++) for(int j = 0; j < m; j++){ if(dp[i][j][l] == -1) continue; for(int f = 0; f < 4; f++){ int x = i + dx[f], y = j + dy[f]; if(works(x, y)){ dp[x][y][l + 1] = max(dp[x][y][l + 1], dp[i][j][l] + a[x][y]); } } } ll ret = 0; for(int i = 0; i < n; i++) for(int j = 0; j < m; j++) for(int l = 0; l <= n + m; l++){ if(dp[i][j][l] == -1) continue; for(int f = 0; f < 4; f++){ int x = i + dx[f], y = j + dy[f]; for(int s = 0; s < 5; s++){ if(works(x, y)){ if(l + 2 * s <= n + m && 2 * (l + s) <= k){ ret = max(ret, dp[i][j][l] + dp[i][j][l + 2 * s] + (k - 2 * (l + s)) / 2 * (a[i][j] + a[x][y]) - a[i][j]); } if(l + 2 * s + 1 <= n + m && 2 * (l + s + 1) <= k && dp[x][y][l + 2 * s + 1] != -1){ ret = max(ret, dp[i][j][l] + dp[x][y][l + 2 * s + 1] + (k - 2 * (l + s + 1)) / 2 * (a[i][j] + a[x][y])); } } } } } cout << ret << endl; 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...