Submission #896421

#TimeUsernameProblemLanguageResultExecution timeMemory
896421goodspeed0208The Kingdom of JOIOI (JOI17_joioi)C++14
100 / 100
1212 ms70940 KiB
#include<iostream> #include<vector> #include<algorithm> #include<set> #include<map> #include<utility> #define int long long #define INF 1000000000000000000 using namespace std; int n, m; int minn = INF, maxx = -INF; vector<vector<int> >v; bool check(int t) { int smallmax = minn + t, bigmin = maxx - t; // small 在下 vector<int>smalllimit(m, 0), biglimit(m, n); for (int j = 0 ; j < m ; j++) { for (int i = n-1 ; i >= 0 ; i--) { if (v[i][j] > smallmax) { smalllimit[j] = i+1; break; } } for (int i = 0 ; i < n ; i++) { if (v[i][j] < bigmin) { biglimit[j] = i-1; break; } } } // 左 到右 下到上 bool can = 1; int last = n+1; for (int i = 0 ; i < m ; i++) { last = min(last, biglimit[i]); if (last + 1 < smalllimit[i]) { can = 0; break; } } if (can) return 1; can = 1; last = n+1; for (int i = m-1 ; i >= 0 ; i--) { last = min(last, biglimit[i]); if (last + 1 < smalllimit[i]) { can = 0; break; } } return can; } signed main() { ios::sync_with_stdio(false); cin.tie(0); cin >> n >> m; v = vector<vector<int> >(n, vector<int>(m)); for (int i = 0 ; i < n ; i++) { for (int j = 0 ; j < m ; j++) { cin >> v[i][j]; if (v[i][j] < minn) minn = v[i][j]; if (v[i][j] > maxx) maxx = v[i][j]; } } int ans = INF; int l = 0, r = 1000000005, mid; while (l + 1 < r) { mid = (l + r) / 2; if (check(mid)) r = mid; else l = mid; } ans = min(ans, r); for (int j = 0 ; j < m ; j++) { for (int i = 0 ; i < n/2 ; i++) { swap(v[i][j], v[n-i-1][j]); } } l = 0, r = 1000000005, mid; while (l + 1 < r) { mid = (l + r) / 2; if (check(mid)) r = mid; else l = mid; } ans = min(ans, r); cout << ans << "\n"; }

Compilation message (stderr)

joioi.cpp: In function 'int main()':
joioi.cpp:82:28: warning: right operand of comma operator has no effect [-Wunused-value]
   82 |  l = 0, r = 1000000005, mid;
      |                            ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...