Submission #996000

#TimeUsernameProblemLanguageResultExecution timeMemory
996000Essa2006Quality Of Living (IOI10_quality)C++14
100 / 100
1619 ms140416 KiB
#include "quality.h" #include<bits/stdc++.h> using namespace std; #define ll long long #define endl '\n' #define FF first #define SS second #define all(a) a.begin(), a.end() #define mod (ll)(1000000007) int rectangle(int rr, int cc, int h, int w, int A[3001][3001]){ int l = 1, r = rr * cc, res = rr * cc; while (l <= r) { int md = (l + r) / 2; int mx = 0; vector<vector<int> > CC(3001, vector<int>(3001)); for (int i = 0; i < rr; i++) { for (int j = 0; j < cc; j++) { CC[i][j] = (A[i][j] <= md); if (i) { CC[i][j] += CC[i - 1][j]; } if (j) { CC[i][j] += CC[i][j - 1]; } if (i && j) { CC[i][j] -= CC[i - 1][j - 1]; } if (rr >= h - 1 && cc >= w - 1) { int sum = CC[i][j]; if (i - h >= 0) { sum -= CC[i - h][j]; } if (j - w >= 0) { sum -= CC[i][j - w]; } if (i - h >= 0 && j - w >= 0) { sum += CC[i - h][j - w]; } mx = max(mx, sum); } } } if (mx > h * w / 2) { res = md, r = md - 1; } else { l = md + 1; } } return res; }
#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...