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

#TimeUsernameProblemLanguageResultExecution timeMemory
797303makanhuliaQuality Of Living (IOI10_quality)C++17
100 / 100
1665 ms175236 KiB
#include<bits/stdc++.h> #include "quality.h" #define ll long long #define pb push_back using namespace std; int h , w , r , c , grid[3001][3001] , pref[3001][3001]; void reset(){ for(int i = 0 ; i <= r ; i++){ for(int j = 0 ; j <= c ; j++){ pref[i][j] = 0; } } } bool inside(int x , int y){ return 0 < x && x <= r && 0 < y && y <= c; } int rectangle(int R , int C , int H , int W , int Q[3001][3001]){ r = R; c = C; h = H; w = W; for(int i = 1 ; i <= r ; i++){ for(int j = 1 ; j <= c ; j++){ grid[i][j] = Q[i - 1][j - 1]; } } int lef = 0 , rig = r * c , ans = 0; while(lef <= rig){ int mid = (lef + rig) / 2; reset(); for(int i = 1 ; i <= r ; i++){ for(int j = 1 ; j <= c ; j++){ pref[i][j] = pref[i - 1][j] + pref[i][j - 1] - pref[i - 1][j - 1] + (grid[i][j] <= mid); } } bool bs = false; for(int i = 1 ; i <= r ; i++){ for(int j = 1 ; j <= c ; j++){ int x = i , y = j , x0 = x + h - 1 , y0 = y + w - 1; if(inside(x0 , y0)){ int tt = pref[x0][y0] - pref[x - 1][y0] - pref[x0][y - 1] + pref[x - 1][y - 1]; //cout << x << " " << y << " " << x0 << " " << y0 << " " << pref[x0][y0] << " " << pref[x][y0] << " " << pref[x0][y] << " " << pref[x][y] << endl; if(tt > (h * w) / 2) bs = true; } } } if(bs){ ans = mid; rig = mid - 1; } else{ lef = mid + 1; } } return ans; }
#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...