Submission #317039

#TimeUsernameProblemLanguageResultExecution timeMemory
317039casperwangMaxcomp (info1cup18_maxcomp)C++14
60 / 100
980 ms24168 KiB
#include <bits/stdc++.h> #define pb push_back #define pii pair<int,int> #define pip pair<int,pii> #define ff first #define ss second using namespace std; const int MAXN = 1000; signed main() { ios_base::sync_with_stdio(0), cin.tie(0); int n, m; cin >> n >> m; vector <vector<int>> arr(n); vector <pip> ord; for (int i = 0; i < n; i++) { arr[i].resize(m); for (int j = 0; j < m; j++) { cin >> arr[i][j]; ord.pb(pip(arr[i][j], pii(i, j))); } } sort(ord.begin(), ord.end(), greater<pip>()); int ans = -1; for (int i = 0; i < n * m; i++) { if (ord[i].ff + (n+m) < ord[0].ff) break; queue <pii> bfs; vector <vector<bool>> vis(n); vector <vector<int>> dis(n), mmin(n); for (int j = 0; j < n; j++) vis[j].resize(m), dis[j].resize(m), mmin[j].resize(m); bfs.push(ord[i].ss); vis[ord[i].ss.ff][ord[i].ss.ss] = 1; dis[ord[i].ss.ff][ord[i].ss.ss] = 1; mmin[ord[i].ss.ff][ord[i].ss.ss] = ord[i].ff; int val = ord[i].ff; while (i+1 < n * m && ord[i+1].ff == ord[i].ff) { bfs.push(ord[++i].ss); vis[ord[i].ss.ff][ord[i].ss.ss] = 1; dis[ord[i].ss.ff][ord[i].ss.ss] = 1; mmin[ord[i].ss.ff][ord[i].ss.ss] = ord[i].ff; } vector <int> dx = {0, 1, -1, 0}, dy = {1, 0, 0, -1}; while (bfs.size() || bfs.size() > n*m) { pii w = bfs.front(); bfs.pop(); for (int j = 0; j < 4; j++) { int x = w.ff + dx[j], y = w.ss + dy[j]; if (x >= n || x < 0 || y >= m || y < 0) continue; if (!vis[x][y]) { vis[x][y] = 1; dis[x][y] = dis[w.ff][w.ss] + 1; mmin[x][y] = min(arr[x][y], mmin[w.ff][w.ss]); ans = max(ans, val - mmin[x][y] - dis[x][y]); bfs.push(pii(x, y)); } } } } cout << ans << "\n"; }

Compilation message (stderr)

maxcomp.cpp: In function 'int main()':
maxcomp.cpp:45:37: warning: comparison of integer expressions of different signedness: 'std::queue<std::pair<int, int> >::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   45 |     while (bfs.size() || bfs.size() > n*m) {
      |                          ~~~~~~~~~~~^~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...