(UPD: 2024-12-04 14:48 UTC) Judge is not working due to Cloudflare incident. (URL) We can do nothing about it, sorry. After the incident is resolved, we will grade all submissions.

Submission #314479

#TimeUsernameProblemLanguageResultExecution timeMemory
314479VROOM_VARUNQuality Of Living (IOI10_quality)C++14
100 / 100
3409 ms176180 KiB
/* ID: varunra2 LANG: C++ TASK: quality */ #include<bits/stdc++.h> #include "quality.h" using namespace std; #ifdef DEBUG #include "lib/debug.h" #define debug(...) cerr << "[" << #__VA_ARGS__ << "]:", debug_out(__VA_ARGS__) #define debug_arr(...) \ cerr << "[" << #__VA_ARGS__ << "]:", debug_arr(__VA_ARGS__) #pragma GCC diagnostic ignored "-Wsign-compare" //#pragma GCC diagnostic ignored "-Wunused-parameter" //#pragma GCC diagnostic ignored "-Wunused-variable" #else #define debug(...) 42 #endif #define EPS 1e-9 #define IN(A, B, C) assert(B <= A && A <= C) #define INF (int)1e9 #define MEM(a, b) memset(a, (b), sizeof(a)) #define MOD 1000000007 #define MP make_pair #define PB push_back #define all(cont) cont.begin(), cont.end() #define rall(cont) cont.end(), cont.begin() #define x first #define y second const double PI = acos(-1.0); typedef long long ll; typedef long double ld; typedef pair<int, int> PII; typedef map<int, int> MPII; typedef multiset<int> MSETI; typedef set<int> SETI; typedef set<string> SETS; typedef vector<int> VI; typedef vector<PII> VII; typedef vector<VI> VVI; typedef vector<string> VS; #define rep(i, a, b) for(int i = a; i < (b); ++i) #define trav(a, x) for(auto& a : x) #define sz(x) (int)(x).size() typedef pair<int, int> pii; typedef vector<int> vi; #pragma GCC diagnostic ignored "-Wsign-compare" // util functions const int MAXN = 3003; VVI pref(MAXN, VI(MAXN)); VVI vals(MAXN, VI(MAXN, INF)); int h, w, r, c; void clr() { trav(x, pref) { trav(y, x) y = 0; } } void genPref() { for(int i = 0; i < MAXN; i++) { for(int j = 0; j < MAXN; j++) { if(i) pref[i][j] += pref[i - 1][j]; if(j) pref[i][j] += pref[i][j - 1]; if(i and j) pref[i][j] -= pref[i - 1][j - 1]; } } } int qry(int a, int b, int c, int d) { int ret = pref[c][d]; if(a) ret -= pref[a - 1][d]; if(b) ret -= pref[c][b - 1]; if(a and b) ret += pref[a - 1][b - 1]; return ret; } int qry(int i, int j) { return qry(i - h + 1, j - w + 1, i, j); } void gen(int x) { rep(i, 0, MAXN) rep(j, 0, MAXN) pref[i][j] = (bool)(vals[i][j] <= x); genPref(); } bool works(int x) { gen(x); rep(i, h - 1, MAXN) rep(j, w - 1, MAXN) { if(qry(i, j) * 2 > h * w) return true; } return false; } int rectangle(int r, int c, int h, int w, int q[3001][3001]) { rep(i, 0, r) rep(j, 0, c) vals[i][j] = --q[i][j]; ::r = r; ::c = c; ::h = h; ::w = w; int x = -1; int z = r * c; for(int b = z + 1; b >= 1; b /= 2) { while(!(works(x + b))) x += b; } return x + 2; } // int main() { // #ifndef ONLINE_JUDGE // freopen("quality.in", "r", stdin); // freopen("quality.out", "w", stdout); // #endif // cin.sync_with_stdio(0); cin.tie(0); // int qq; // cin >> qq; // while(qq--) { // int h, w, r, c; // cin >> h >> w >> r >> c; // int q[r][c]; // for(int i = 0; i < r; i++) { // for(int j = 0; j < c; j++) { // cin >> q[i][j]; // } // } // debug(rectangle(h, w, r, c, q)); // } // 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...