답안 #274482

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
274482 2020-08-19T12:16:15 Z shinjan 삶의 질 (IOI10_quality) C++14
0 / 100
1 ms 512 KB
#include <iostream>
#include <bits/stdc++.h>
#define maxN 3000
#include "quality.h"
#include <stdio.h>
#include <stdlib.h>
using namespace std;
int fen[maxN*maxN+1];
void add(int val,int maks)
{
    for(int i=val;i<=maks;i+=(i&(-i)))
    {
        fen[i]++;
    }
}
void brisi(int val,int maks)
{
    for(int i=val;i<=maks;i+=(i&(-i)))
    {
        fen[i]--;
    }
}
int sum(int ind)
{
    int ans=0;
    for(int i=ind;i>=1;i-=(i&(-i)))
    {
        ans+=fen[i];
    }
    return ans;
}
int findMedian(int maks,int mineq)
{
    int r=maks,l=1;
    int mid=(r+l)/2;
    while(l<r-1)
    {
        if(sum(mid)>mineq)
        {
            r=mid;
        }
        else{
            l=mid;
        }
        mid=(r+l)/2;
    }
    if(sum(l)==mineq)
    {
        return l;
    }
    return r;
}
int rectangle(int r,int c,int h,int w,int q[3001][3001])
{
    int ans=INT_MAX;
    int mineq=(h*w)/2+1;
    for(int i=0;i+h-1<r;i++)
    {
        for(int ind=i;ind<h+i;ind++)
        {
            for(int j=0;j<w;j++)
            {
                add(q[ind][j],r*c);
            }
        }
        ans=min(ans,findMedian(r*c,mineq));
        for(int j=1;j+w-1<c;j++)
        {
            for(int ind=i;ind<i+h;ind++)
            {
                brisi(q[ind][j-1],r*c);
            }
            for(int ind=i;ind<i+h;ind++)
            {
                add(q[ind][j+w-1],r*c);
            }
            ans=min(ans,findMedian(r*c,mineq));
        }
        for(int ind=i;ind<h+i;ind++)
        {
            for(int j=0;j<w;j++)
            {
                brisi(q[ind][c-1-j],r*c);
            }
        }
    }
    return ans;
}
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 512 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 512 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 512 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 512 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 512 KB Output isn't correct
2 Halted 0 ms 0 KB -