ahmedarifhasan Ответов: 2

Может ли кто-нибудь сказать мне, пожалуйста, почему этот код не принимается? Примечание:Я не прошу решения, просто скажите мне, где этот код терпит неудачу


Страница Конкурса | CodeChef[^]
Ограничения:>
Все элементы равны >=1, то есть a[i]>=1 и (10>=t>=1) и (700>=n>=1)

Что я уже пробовал:

я перепробовал почти все типы тестовых случаев, которые я мог бы сделать, все они вышли правильными, и я не могу распознать, где мой код терпит неудачу.
#include<stdio.h>
int main()
{
    long long int n, t, k, i, j, max[701], a[701][701], sum, flag;
 
    scanf( "%lld", &t );

    for( k = 0 ; k < t ; k++ )
    { 
        scanf( "%lld", &n );

        for( i = 0 ; i < n ; i++ )
        {  
            for( j = 0 ; j < n ; j++ )
            { 
                scanf( "%lld", &a[i][j] );
                if( j == 0)
                    max[i] = a[i][0];
                if( a[i][j] > max[i] )
                    max[i] = a[i][j];
            }
        }

        sum = 0, flag = 0;

        for( i = 0 ; i < n-1 ; i++ )
        { 
            if( max[i] < max[i+1])
                sum = sum + max[i];
            else
            {
                flag = 1;
                break;
            }
        }

        if(flag == 1)
            printf("-1\n");
        else
        {
            sum = sum + max[n-1];
            printf("%lld\n", sum );
        }
    }
}

Richard MacCutchan

Что происходит, когда вы запускаете его?

ahmedarifhasan

он успешно работает,но компилятор codechef не принимает, конечно, есть какая-то ошибка, которую я не могу распознать.

Richard MacCutchan

Задать codechef. Пока вы не объясните проблему, трудно угадать предложение.

ahmedarifhasan

ну, а вы можете сказать тестовый случай, когда это не удается?

Richard MacCutchan

Где что терпит неудачу? Вы даже не объяснили, что должен делать этот код.

Patrice T

Что именно говорит CodeChef?

KarstenK

Нам действительно нужны полные и исчерпывающие сообщения об ошибках. Также с номерами строк в вашем коде!!!

Я вижу, что вам нужен только размер массива 700. Но самое главное: проверьте это в цикле while. Немного больше выходных данных и комментариев к коду всегда полезны ;-)

2 Ответов

Рейтинг:
9

chitaranjan pradhan

1
3
6 10 12
4 5 7
8 9 10
-1

ой должно быть 6+7+10=23


Patrice T

Объясняет ли это причину, по которой программа неверна?

ahmedarifhasan

предположим, что у нас есть
1
3
6 10 12
8 15 7
8 19 10
а что потом?
так ли это 6+7+19 или 6+7+10-что? или 6+7+8-что?

chitaranjan pradhan

вы должны проверить, что Ei is должно быть больше, чем Ei-1; и сумма должна быть максимальной ok.
от 6 10 12 :-12 больше и 8 15 7 :-15 больше и 12<15 удовлетворяют
от 8 19 10:-19 больше и 15<19 удовлетворяет, так что сумма будет 12+15+19=46

chitaranjan pradhan

12+15+19=46

chitaranjan pradhan

12+15+21=48

ahmedarifhasan

О-О-О-О , понял, спасибо, братан

chitaranjan pradhan

если вы решили, пожалуйста, отправьте код на почтовый ящик, чтобы получить дополнительную помощь im там..
мой аккаунт Gmail chitta4pradhan@gmail.com

CodeBlooded

@ahmedarifhasan : если это возможно, можете ли вы представить правильный ответ?

ahmedarifhasan

@CodeBlooded Ну, мой код привел к TLE, я попробовал почти 3-4 метода, но....TLE или WA, все равно, если вы хотите, чтобы я отправил сообщение, скажите мне

chitaranjan pradhan

Hy я решил данную проблему и все тест прошел

ahmedarifhasan

охххк, мой метод показывает тле

Рейтинг:
14

Patrice T

Цитата:
Может ли кто-нибудь сказать мне, пожалуйста, почему этот код не принимается? Примечание:Я не прошу решения, просто скажите мне, где этот код терпит неудачу

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

У тебя есть цель:
Compute the maximum possible value of E1 + E2 + ... + EN. If it's impossible to pick the elements E1, E2, ..., EN, print -1 instead.

и ограничение:
You should pick N elements, one from each sequence; let's denote the element picked from sequence Ai by Ei. For each i (2 ≤ i ≤ N), Ei should be strictly greater than Ei-1.

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

Input:
1
3
 6 2 3
11 5 6
 7 8 9

Output:
3 + 6 + 9 = 18


[Обновление]
Вы должны понимать, что полное объяснение означает, что вы провалили конкурс.
You should pick N elements, one from each sequence; let's denote the element picked from sequence Ai by Ei. For each i (2 ≤ i ≤ N), Ei should be strictly greater than Ei-1.

Ограничение построено таким образом, что оно подразумевает вычисление максимально допустимого значения каждой строки в обратном порядке.
Из практических соображений вы должны обратить ограничение на:
For each i (1 ≤ i ≤ N-1), Ei should be strictly lower than Ei+1.

И последняя строка не имеет никакого ограничения.
Input:
1
3
 6 2 3
11 5 6
 7 8 9

Решение:
 7 8 9: no constraint,  7 8 9 qualified, maximum is 9.
11 5 6: constraint is < 9,  5 6 qualified, maximum is 6.
 6 2 3: constraint is < 6, 2 3 qualified, maximum is 3.
output is: 9+6+3=18

1
3
6 10 12
8 15 7
8 19 10

Решение:
8 19 10: no constraint, 8 19 10 qualified, maximum is 19.
8 15 7: constraint is < 19,  8 15 7 qualified, maximum is 15.
6 10 12: constraint is < 15, 6 10 12 qualified, maximum is 12.
output is: 19+15+12=46


ahmedarifhasan

@ppolymorphe

Если вы посмотрите на приведенный пример:
Пример
Ввод:

1
3
1 2 3
4 5 6
7 8 9

Выход:

18
Объяснение
Пример 1: чтобы увеличить счет, выберите 3 из первой строки, 6 из второй строки и 9 из третьей строки. Полученная сумма равна E1+E2+E3 = 3+6+9 = 18.

если вы заметили, что они упомянули "максимизировать", зачем им это?

они могли бы выбрать сами 1+4+7=12 согласно тому, что вы сказали.

ahmedarifhasan

@ppolymorphe
Также,
"Вычислить максимальный возможное значение E1 + E2 + ... + EN. Если невозможно выбрать элементы E1, E2, ..., EN, выведите вместо них -1."
И максимально возможное значение, если условие :
"Для каждого i (2 ≤ i ≤ N), Ei должно быть строго больше, чем Ei-1."
удовлетворяется, то приходит максимальное значение только если мы возьмем максимальный элемент определенной последовательности.