Submission #1175637

#TimeUsernameProblemLanguageResultExecution timeMemory
1175637superautoQuality Of Living (IOI10_quality)C++20
Compilation error
0 ms0 KiB
#include <iostream>
#include <vector>
#include <algorithm>
#include <set>

using namespace std;

int R, C, H, W;
vector<vector<int>> Q;

bool isValid(int val) {
    vector<vector<int>> B(R, vector<int>(C, 0));
    for (int i = 0; i < R; i++) {
        for (int j = 0; j < C; j++) {
            B[i][j] = (Q[i][j] <= val) ? 1 : 0;
        }
    }
    
    vector<vector<int>> prefixSum(R + 1, vector<int>(C + 1, 0));
    for (int i = 1; i <= R; i++) {
        for (int j = 1; j <= C; j++) {
            prefixSum[i][j] = B[i-1][j-1] + prefixSum[i-1][j] + prefixSum[i][j-1] - prefixSum[i-1][j-1];
        }
    }
    
    int required = (H * W) / 2 + 1;
    for (int i = H; i <= R; i++) {
        for (int j = W; j <= C; j++) {
            int count = prefixSum[i][j] - prefixSum[i-H][j] - prefixSum[i][j-W] + prefixSum[i-H][j-W];
            if (count >= required) return true;
        }
    }
    return false;
}

int rectangle(int R, int C, int H, int W, vector<vector<int>>& Q) {
    ::R = R; ::C = C; ::H = H; ::W = W; ::Q = Q;
    int left = 1, right = R * C, answer = right;
    
    while (left <= right) {
        int mid = (left + right) / 2;
        if (isValid(mid)) {
            answer = mid;
            right = mid - 1;
        } else {
            left = mid + 1;
        }
    }
    return answer;
}

int main() {
    cin >> R >> C >> H >> W;
    vector<vector<int>> Q(R, vector<int>(C));
    for (int i = 0; i < R; i++) {
        for (int j = 0; j < C; j++) {
            cin >> Q[i][j];
        }
    }
    cout << rectangle(R, C, H, W, Q) << endl;
    return 0;
}

Compilation message (stderr)

/usr/bin/ld: /tmp/ccxDe1VO.o: in function `main':
grader.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/ccIr2USA.o:quality.cpp:(.text.startup+0x0): first defined here
/usr/bin/ld: /tmp/ccxDe1VO.o: in function `main':
grader.cpp:(.text.startup+0xe9): undefined reference to `rectangle(int, int, int, int, int (*) [3001])'
collect2: error: ld returned 1 exit status