(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 #501088

#TimeUsernameProblemLanguageResultExecution timeMemory
501088beaconmcQuality Of Living (IOI10_quality)C++14
100 / 100
3942 ms210688 KiB
#include <bits/stdc++.h> typedef long long ll; #define FOR(i,x,y) for(ll i=x; i<y; i++) #define FORNEG(i,x,y) for(ll i=x; i>y; i--) using namespace std; int pos[9000001][2]; int pref[3001][3001]; int r,c,h,w; bool check(int x){ FOR(i,0,3001){ FOR(j,0,3001){ pref[i][j] = 0; } } FOR(i,1,x+1){ int a = pos[i][0]; int b=pos[i][1]; pref[max(0, a-h+1)][b+1] -= 1; pref[a+1][b+1] += 1; b = max(0, b-w+1); pref[max(0, a-h+1)][b] += 1; pref[a+1][b] -= 1; } FOR(j,0,c-w+1){ FOR(i,1,r-h+1){ pref[i][j] += pref[i-1][j]; } } FOR(i,0,r-h+1){ if (pref[i][0] > int(h*w/2)) return true; FOR(j,1,c-w+1){ pref[i][j] += pref[i][j-1]; if (pref[i][j]> int(h*w/2)) return true; } } return false; } int rectangle(int R, int C, int H, int W, int Q[3001][3001]) { r = R; c = C; h = H; w = W; FOR(i,0,R){ FOR(j,0,C){ pos[Q[i][j]][0] = i; pos[Q[i][j]][1] = j; } } int lo = 0; int hi = int(R*C/2)+1; while (lo < hi) { int mid = lo + (hi - lo) / 2; if (check(mid)) { hi = mid; } else { lo = mid + 1; } } return lo; }
#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...