Блог пользователя mostyka

Автор mostyka, история, 5 лет назад, По-русски

Решал задачу https://codeforces.net/contest/1245/problem/F и словил ВА на первом тесте. На моем dev c++ при вводе данных с первого теста выдаёт верный ответ, однако тест-система получает другой. вот мой код: https://codeforces.net/contest/1245/submission/65759291 Если кто сталкивался уже с такой проблемой, то буду рад если подскажете.

  • Проголосовать: нравится
  • +3
  • Проголосовать: не нравится

»
5 лет назад, # |
  Проголосовать: нравится +1 Проголосовать: не нравится

У тебя было неверно написан кусок, отвечавший за выравнивание длин векторов first и second:

У тебя:

minSZ = max(first.size(), second.size());
if(!minSZ) minSZ++;
for(int i = 0; i < first.size() - minSZ; i++) first.push_back(0);
for(int i = 0; i < second.size() - minSZ; i++) second.push_back(0);

Как минимум, тут first.size() - minSZ и second.size() - minSZ $$$\lt 0$$$ оба.

То есть у тебя вектора вообще не выравнивались, происходил выход за границы вектора. Локально, наверное, ты попадал на куски памяти, где лежали 0 и все обходилось, а на КФ попал в память, чем-то заполненную.

Вот так выдает верный ответ:

minSZ = max(first.size(), second.size());
if(!minSZ) minSZ++;
while (first.size() < minSZ) first.push_back(0);
while (second.size() < minSZ) second.push_back(0);