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

#TimeUsernameProblemLanguageResultExecution timeMemory
582730Dan4LifeQuality Of Living (IOI10_quality)C++17
100 / 100
1746 ms175284 KiB
#include "quality.h" #include <bits/stdc++.h> using namespace std; int n, m, h, w, a[3001][3001], pre[3002][3002]; inline int sum(int x1, int y1, int x2, int y2){ return pre[x2][y2]-pre[x1-1][y2]-pre[x2][y1-1]+pre[x1-1][y1-1]; } bool chk(int x){ for(int i = 0; i <= n; i++) pre[i][0]=0; for(int i = 0; i <= m; i++) pre[0][i]=0; for(int i = 1; i <= n; i++) for(int j = 1; j <= m; j++) pre[i][j] = pre[i-1][j]+pre[i][j-1]-pre[i-1][j-1]+(a[i][j]<=x); for(int i = 1; i <= n-h+1; i++) for(int j = 1; j <= m-w+1; j++) if(sum(i,j,i+h-1,j+w-1)>=h*w/2+1) return true; return false; } int rectangle(int R, int C, int H, int W, int A[3001][3001]) { n=R, m=C, h=H, w=W; for(int i = 0; i < n; i++) for(int j = 0; j < m; j++) a[i+1][j+1] = A[i][j]; int l = 0, r = n*m; while(l+1<r){ int mid = (l+r)/2; if(chk(mid)) r=mid; else l=mid; } return r; }
#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...