제출 #1348159

#제출 시각아이디문제언어결과실행 시간메모리
1348159tedaka삶의 질 (IOI10_quality)C++20
100 / 100
680 ms106344 KiB
#include "quality.h"
#include<bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
#define endl '\n'
using namespace std;
int n,m;
const int maxn=3010;
int pref[maxn][maxn],q[maxn][maxn];
bool check(int x,int w,int h)
{
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
        {
            if(q[i][j]<=x)
            {
                pref[i][j]=1;
            }else pref[i][j]=0;
        }
    }
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
        {
            pref[i][j]=pref[i-1][j]+pref[i][j-1]-pref[i-1][j-1]+pref[i][j];
            if(w<=j&&h<=i&&pref[i][j]-pref[i-h][j]-pref[i][j-w]+pref[i-h][j-w]>w*h/2)
            {
                return 1;
            }
        }
    }
    return 0;
}
int rectangle(int r, int c, int h, int w, int Q[3001][3001])
{
    int minc=1e9;
    n=r;
    int ans=0;
    m=c;
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)q[i][j]=Q[i-1][j-1];
    }
    int l=1,r1=n*m+100;
    while(l<=r1)
    {
        int m=(l+r1)/2;
        if(check(m,w,h))
        {
            ans=m;
            r1=m-1;
        }else l=m+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...