CodeChef Покупка нового планшетного решения - PullRequest
0 голосов
/ 24 февраля 2019

Когда я запускаю этот код, почему он дает мне неправильный вывод?В моей системе я получаю правильный вывод.Мой вывод такой же, как приведенный в ссылке , но они все равно его не примут.

int main()
{

    int t, n, b, i;

    scanf("%d", &t);

    while (t--) {
        scanf("%d %d", &n, &b);
        int area[n];
        int max = 0;
        area[0] = 0;
        int p[n], w[n], h[n];
        int count = 0;

        for (i = 1; i <= n; i++) {
            scanf("%d %d %d", &w[i], &h[i], &p[i]);
        }

        for (i = 1; i <= n; i++) {
            if (p[i] <= b) {
                area[i] = w[i] * h[i];
                if (area[i] > max) {
                    max = area[i];
                    printf("%d\n", max);
                    count++;
                }
            }
        }
        if (count == 0) {
            printf("no tablet\n");
        }
    }
    return 0;
}

1 Ответ

0 голосов
/ 24 февраля 2019

Вы индексируете границы массива с помощью

for(i = 1; i<=n; i++)

Вы можете индексировать длину массива n с индексом 0 до n-1.Поэтому измените оба цикла на

for(i = 0; i < n; i++)

и удалите бесполезную строку

area[0] = 0;

Кроме того, вы не должны выводить результат внутри цикла, так как если последовательность ввода данных отличается отВ примере он печатает результат более одного раза.Поместите это потом.

if(count == 0)
{
    printf("no tablet\n");
}
else
{
    printf("%d\n",max);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...