Submission #224424

# Submission time Handle Problem Language Result Execution time Memory
224424 2020-04-17T21:11:23 Z jhnah917 Quality Of Living (IOI10_quality) C++14
100 / 100
3434 ms 176496 KB
#include "quality.h"
#include <bits/stdc++.h>
using namespace std;

int n, m, h, w;
int a[3030][3030];
int v[3030][3030]; //x 이상이면 1, 미만이면 0

void make(int x){
    for(int i=1; i<=n; i++) for(int j=1; j<=m; j++){
        if(a[i][j] > x) v[i][j] = 1;
        else if(a[i][j] < x) v[i][j] = -1;
        else v[i][j] = 0;
    }
    for(int i=1; i<=n; i++) for(int j=1; j<=m; j++){
        v[i][j] += v[i-1][j];
        v[i][j] += v[i][j-1];
        v[i][j] -= v[i-1][j-1];
    }
}

int query(int x, int xx, int y, int yy){
    return v[xx][yy] - v[x-1][yy] - v[xx][y-1] + v[x-1][y-1];
}

int chk(int x){
    make(x);
    for(int i=1; i<=n; i++) if(i+h-1 <= n){
        for(int j=1; j<=m; j++) if(j+w-1 <= m){
            if(query(i, i+h-1, j, j+w-1) <= 0) return 1;
        }
    }
    return 0;
}

int rectangle(int N, int M, int H, int W, int A[3001][3001]) {
    n = N, m = M, h = H, w = W;
    for(int i=1; i<=n; i++) for(int j=1; j<=m; j++) a[i][j] = A[i-1][j-1];
    int l = 0, r = 3030*3030;
    while(l < r){
        int m = l + r >> 1;
        if(chk(m)) r = m;
        else l = m + 1;
    }
    return r;
}

Compilation message

quality.cpp: In function 'int rectangle(int, int, int, int, int (*)[3001])':
quality.cpp:41:19: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
         int m = l + r >> 1;
                 ~~^~~
# Verdict Execution time Memory Grader output
1 Correct 5 ms 640 KB Output is correct
2 Correct 5 ms 768 KB Output is correct
3 Correct 5 ms 640 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 5 ms 640 KB Output is correct
2 Correct 5 ms 768 KB Output is correct
3 Correct 5 ms 640 KB Output is correct
4 Correct 8 ms 1664 KB Output is correct
5 Correct 8 ms 1664 KB Output is correct
6 Correct 8 ms 1664 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 5 ms 640 KB Output is correct
2 Correct 5 ms 768 KB Output is correct
3 Correct 5 ms 640 KB Output is correct
4 Correct 8 ms 1664 KB Output is correct
5 Correct 8 ms 1664 KB Output is correct
6 Correct 8 ms 1664 KB Output is correct
7 Correct 35 ms 5504 KB Output is correct
8 Correct 36 ms 5504 KB Output is correct
9 Correct 33 ms 5376 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 5 ms 640 KB Output is correct
2 Correct 5 ms 768 KB Output is correct
3 Correct 5 ms 640 KB Output is correct
4 Correct 8 ms 1664 KB Output is correct
5 Correct 8 ms 1664 KB Output is correct
6 Correct 8 ms 1664 KB Output is correct
7 Correct 35 ms 5504 KB Output is correct
8 Correct 36 ms 5504 KB Output is correct
9 Correct 33 ms 5376 KB Output is correct
10 Correct 376 ms 30916 KB Output is correct
11 Correct 367 ms 30952 KB Output is correct
12 Correct 190 ms 21628 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 5 ms 640 KB Output is correct
2 Correct 5 ms 768 KB Output is correct
3 Correct 5 ms 640 KB Output is correct
4 Correct 8 ms 1664 KB Output is correct
5 Correct 8 ms 1664 KB Output is correct
6 Correct 8 ms 1664 KB Output is correct
7 Correct 35 ms 5504 KB Output is correct
8 Correct 36 ms 5504 KB Output is correct
9 Correct 33 ms 5376 KB Output is correct
10 Correct 376 ms 30916 KB Output is correct
11 Correct 367 ms 30952 KB Output is correct
12 Correct 190 ms 21628 KB Output is correct
13 Correct 3426 ms 176496 KB Output is correct
14 Correct 3434 ms 176256 KB Output is correct
15 Correct 3095 ms 169228 KB Output is correct