Это должно быть действительно в обзоре кода ...
Ваш код читает T , а через цикл уничтожает его значение. Сделайте себе и читателю услугу и вызовите переменную «numberOfTestCases», а затем выполните цикл для (long long testCase = 0; testCase < numberOfTestCases; ++ testCase) ... Это стандартный способ написать цикл. И поверьте, более длинные имена переменных не замедляют работу кода.
Вы объявили M как длинный long int и суммируете как int. Теперь подумайте об этом: даже в самом тривиальном случае, когда M [0] = 0 и M [1]> 0, если M [1] велико, то он не будет вписываться в int. Это абсолютно не имеет смысла. Величины, которые суммируют, должны быть одинаковыми или большими, чем те, которые удерживаются М.
Вы указали и инициализировали сумму вне цикла для тестовых случаев. Вероятно, вы узнали, что переменная всегда должна быть инициализирована. НЕПРАВИЛЬНО. Инициализация здесь просто скрывает фатальную ошибку, и это значит, что вы снова не возвращаете сумму в 0. Вы должны были объявить сумму внутри вашего цикла, только для одного тестового примера. Объявление и инициализация за пределами цикла было ошибкой, ожидающей ее появления.
Разностный массив совершенно бессмыслен. Вы просто тратите 800 КБ памяти. Переменная j никогда не используется, что сбивает с толку.
Вы используете одно объявление для разных предметов, тип которых не связан. Тип T должен основываться на максимальном количестве наборов тестов, которые необходимо обработать. Тип N и i должен основываться на максимальном количестве значений в тесте. Тип M должен основываться на требовании о том, насколько велики могут быть входные значения. Эти три типа не связаны друг с другом, но вы используете одно объявление. «Ожидание аварии».
Ваше приложение будет разбиваться, если N> 100 000 или N = LLONG_MIN.
Вы ввели все свои функции в main(). Для этого не главное. main() должен настроить ваше приложение и начать работу. Скорее всего main() должен вызывать функцию do_homework, а do_homework должен вызывать функции read_data и calculate_sum.
только первый тестовый пример показывает правильный выходной выход, все я получаю неправильный вывод – acus
Каковы неудачные тестовые примеры? – bgoldst
входные тестовые = 4 нет элементов = 4 элементы в массиве = 1 2 1 5 Выход 6 21 выход должен быть 6 6 6 6 – acus