답안 #303051

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
303051 2020-09-19T19:39:06 Z iliccmarko 삶의 질 (IOI10_quality) C++14
0 / 100
1 ms 512 KB
#include <bits/stdc++.h>
#include<quality.h>
using namespace std;
#define ll long long
#define endl "\n"

using namespace std;

int rectangle(int r, int c, int h, int w, int q[3001][3001])
{
    int l = 1;
    int R = r*c;
    int ans;
    while(l<=R)
    {
        int mid = (l+R)/2;
        int mat[r][c];
        for(int i = 0;i<r;i++)
        {
            for(int j = 0;j<c;j++)
            {
                if(q[i][j]<mid)
                    mat[i][j] = -1;
                else if(q[i][j]==mid)
                    mat[i][j] = 0;
                else
                    mat[i][j] = 1;
            }
        }
        int prefix[r][c];
        for(int i = 0;i<r;i++)
        {
            for(int j = 0;j<c;j++)
            {
                if(j==0)
                {
                    prefix[i][j] = mat[i][j];
                }
                else
                {
                    prefix[i][j] = prefix[i][j-1] + mat[i][j];
                }
            }
        }
        int s, e;
        s = e = 0;
        int sum = 0;
        for(int i = w-1;i<c;i++)
        {
            for(int j = 0;j<h;j++)
            {
                if(i==w-1)
                {
                    sum+=prefix[j][w-1];
                }
                else
                {
                    sum+=prefix[j][i] - prefix[j][i-w];
                }
            }
            if(sum<0)
            {
                s++;
                break;
            }
            else if(sum==0)
            {
                e++;
            }
            for(int j = h;j<r;j++)
            {
                if(i==w-1)
                {
                    sum-=prefix[j-h][w-1];
                    sum+=prefix[j][w-1];
                }
                else
                {
                    sum-=prefix[j-h][i] - prefix[j-h][i-w];
                    sum+=prefix[j][i] - prefix[j][i-w];
                }
                if(sum<0)
                {
                    s++;
                    break;
                }
                else if(sum==0)
                {
                    e++;
                }
            }
            if(s!=0) break;
        }
        if(s)
        {
            R = mid - 1;
        }
        else if(e)
        {
            ans = mid;
            R = mid - 1;
        }
        else
        {
            l = mid + 1;
        }
    }
    return ans;
}

Compilation message

quality.cpp: In function 'int rectangle(int, int, int, int, int (*)[3001])':
quality.cpp:108:12: warning: 'ans' may be used uninitialized in this function [-Wmaybe-uninitialized]
  108 |     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 -