WA求助
查看原帖
WA求助
887431
Chery1楼主2023/4/21 20:25
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int min(int a, int b) {
    return a < b ? a : b;
}

int max(int a, int b) {
    return a > b ? a : b;
}

int main() {
    int N, K;
    scanf("%d%d", &N, &K);

    int** b = (int**)malloc(N * sizeof(int*));
    for (int i = 0; i < N; i++) {
        b[i] = (int*)malloc(2 * sizeof(int));
    }

    int d = 0;
    for (int i = 0; i < N; i++) {
        scanf("%d%d", &b[i][0], &b[i][1]);
        if (d < min(b[i][0], b[i][1])) {
            d = min(b[i][0], b[i][1]);
        }
    }

    int* a = (int*)calloc(d + 1, sizeof(int));
    int left = 1, right = d;
    while (true) {
        if (left == right - 1 || left == right) {
            printf("%d", left);
            break;
        }
        int mid = (left + right) / 2;
        int c = 0;
        for (int i = 0; i < N; i++) {
            c = (min(b[i][0], b[i][1]) / mid) * (max(b[i][0], b[i][1]) / mid) + c;
            if (i == N - 1) {
                a[mid] = c;
            }
        }
        if (a[mid] >= K) {
            left = mid;
        } else {
            right = mid;
        }
    }

    for (int i = 0; i < N; i++) {
        free(b[i]);
    }
    free(b);
    free(a);

    return 0;
}

有一个测试点出现WA错误,其它测试点都AC了,看不到测试数据,不知道哪里出问题了

2023/4/21 20:25
加载中...