제출 #512672

#제출 시각아이디문제언어결과실행 시간메모리
512672saral삶의 질 (IOI10_quality)C++14
컴파일 에러
0 ms0 KiB
#include "quality.h" const int N = 3010; int pom[N][N], b[N][N]; bool check (int x, int n, int m, int h, int w, int a[3001][3001]) { for (int i = 0; i <= n; i++) { for (int j = 0; j <= m; j++) { pom[i][j] = 0; } } for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { if (a[i][j] <= x) pom[i][j] = 1; else pom[i][j] = 0; pom[i][j] = pom[i][j]+pom[i-1][j]+pom[i][j-1]-pom[i-1][j-1]; } } /*for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { cout << pom[i][j] << " "; } cout << endl; }*/ for (int i = h; i <= n; i++) { for (int j = w; j <= m; j++) { int val = pom[i][j]-pom[i-h][j]-pom[i][j-w]+pom[i-h][j-w]; if (val >= (h*w+1)/2) return true; } } return false; } int rectangle(int R, int C, int H, int W, int Q[3001][3001]) { int lo = 1, hi = R*C, mid; for (int i = 0; i < R; i++) { for (int j = 0; j < C; j++) { b[i+1][j+1] = Q[i][j]; } } while (lo < hi) { mid = (lo+hi)/2; if (check(mid, R, C, H, W, b)) { hi = mid; } else { lo = mid+1; } } return lo; }

컴파일 시 표준 에러 (stderr) 메시지

quality.cpp: In function 'int rectangle(int, int, int, int, int (*)[3001])':
quality.cpp:41:30: error: cannot convert 'int (*)[3010]' to 'int (*)[3001]'
   41 |   if (check(mid, R, C, H, W, b)) {
      |                              ^
      |                              |
      |                              int (*)[3010]
quality.cpp:5:52: note:   initializing argument 6 of 'bool check(int, int, int, int, int, int (*)[3001])'
    5 | bool check (int x, int n, int m, int h, int w, int a[3001][3001]) {
      |                                                ~~~~^~~~~~~~~~~~~