#c #algorithm #vector #runtime-error #long-integer
#c #алгоритм #вектор #время выполнения-ошибка #длинное целое число
Вопрос:
Недавно я занимался этой проблемой, где мне нужно рассчитать общее количество листьев, которые остались невредимыми гусеницами.
И, к счастью, я сделал код довольно быстро, только чтобы обнаружить, что он был выдан Runtime Error
судьей IARCS.
Вот конкретный тестовый пример:
762744433 19
96412 40852 19611 563380 236733 559627 750968 413673 300332 65 682403 441221 180068 668364 493413 443706 613246 715846 728157
Вот код:
#include <iostream>
#include <vector>
#include <algorithm>
int main (int argc, char const* argv[])
{
long long n , k;
std::cin >> n >> k;
long long caterpillars[k];
std::vector<long long>v;
for(int i=0;i<k;i ){
std::cin >> caterpillars[i];
}
for(int i=0;i<k;i ){
for(int j=0;caterpillars[i]*j 1 <= n;j ){
int temp = caterpillars[i]*j 1;
v.push_back(temp);
}
}
sort(v.begin(),v.end());
int number = 0;
long long prev = 0;
for(int i=0;i<v.size();i ){
if(v[i] != prev){
number ;
}
prev = v[i];
}
std::cout << n - number << std::endl;
return 0;
}
Но самое удивительное, что код дает точный ответ на моем компьютере, gdb также делает то же самое, но там лежит дерьмовый судья IARCS.
Кто-нибудь может мне в этом помочь?
Комментарии:
1.
long long caterpillars[k];
не является стандартным и не должен компилироваться. Вы должны заменить его наstd::vector
.2. кто сказал, что он не будет компилироваться?
3. Я сказал, что не должен. Есть компиляторы, которые разрешают это, если у вас нет предупреждений. Посмотрите на эти «рабочие» и «нерабочие» примеры
4. о, хорошо, bdw, меняющий его на vector, тоже не помогает.
Ответ №1:
Ограничение памяти, указанное судьей, составляет 64 МБ. Процедура, которую вы используете для решения вопроса, не гарантирует, что занимаемое пространство будет меньше 64 МБ. На самом деле это превысит предел во многих тестовых примерах. Пример: 1000000000 1 2.
Большинство конкурентных веб-сайтов по программированию проводят различие между ошибкой во время выполнения и превышением лимита памяти. Если IARCS делает то же самое, то должна быть какая-то другая причина ошибки.