Submission #44724

#TimeUsernameProblemLanguageResultExecution timeMemory
44724cheater2kMaxcomp (info1cup18_maxcomp)C++17
0 / 100
2 ms460 KiB
#include <bits/stdc++.h> using namespace std; const long long INF = 1e18; const int N = 1005; const int dx[] = {0, 0, -1, +1}, dy[] = {-1, +1, 0, 0}; int n, m; int a[N][N]; long long dp[N][N]; long long res = -INF; vector < pair<int,int> > vals; int main() { ios_base::sync_with_stdio(false); cin.tie(0); cin >> n >> m; for (int i = 1; i <= n; ++i) { for (int j = 1; j <= m; ++j) { cin >> a[i][j]; vals.push_back(make_pair(i, j)); } } sort(vals.begin(), vals.end(), [&](pair<int,int> p, pair<int,int> q) { return a[p.first][p.second] > a[q.first][q.second]; }); for (int i = 1; i <= n; ++i) { for (int j = 1; j <= m; ++j) { dp[i][j] = -INF; } } for (auto &c : vals) { int i = c.first, j = c.second; dp[i][j] = -1; for (int dir = 0; dir < 4; ++dir) { int ni = i + dx[dir], nj = j + dy[dir]; if (ni < 1 || ni > n || nj < 1 || nj > m) continue; dp[i][j] = max(dp[i][j], dp[ni][nj] + a[ni][nj] - 1 - a[i][j]); } res = max(res, dp[i][j]); } cout << res << 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...