제출 #1348390

#제출 시각아이디문제언어결과실행 시간메모리
1348390dimitar삶의 질 (IOI10_quality)C++17
0 / 100
0 ms580 KiB
#include<bits/stdc++.h>

using namespace std;
const int maxn=3005;
int r,c,h,w;
int q[maxn][maxn];
int pref[maxn][maxn];

void read()
{
    cin>>r>>c>>h>>w;
    for(int i=1; i<=r; i++)
    {
        for(int j=1; j<=c; j++)cin>>q[i][j];
    }
}

bool check(int x)
{
    for(int i=0; i<=r; i++)
    {
        for(int j=0; j<=c; j++)pref[i][j]=0;
    }
    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];
            if(q[i][j]<=x)pref[i][j]++;
            else pref[i][j]--;

        }
    }
    for(int i=h; i<=r; i++)
    {
        for(int j=w; j<=c; j++)
        {
            int sum=pref[i][j]-pref[i-h][j]-pref[i][j-w]+pref[i-h][j-w];
            if(sum>0)return 1;
        }
    }
    return 0;
}

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++)q[i][j]=Q[i][j];
    }
    int l=1,rt=r*c;
    while(l<rt)
    {
        int mid=(l+rt)/2;
        if(check(mid))rt=mid;
        else l=mid+1;
    }
    return l;
}
#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...