02. Longest Sequence
Здравейте имам проблем с решението на задачата дава ми 80/100 в judge, като грешката я дава на 2-ри тест! Ако числата са 0 или 1 си изкарва на конзолата или нищо или единственото число от вектора, така че не в това е грешката! Не се сещам в какво може да е проблемът! Вече няколко часа си блъскам главата с тази задача и ще съм щастлив ако е възможно да помогнете! Благодаря много предварително!
#include <iostream>
#include <vector>
void fillArray(std::vector<int> &numbers, int n) {
for(int i=0; i < n; ++i) {
int x;
std::cin >> x;
numbers.push_back(x);
}
}
int main() {
int n, counter = 0, largestCounter = 1;
bool added = false;
std::cin >> n;
std::vector<int> numbers, sequence, longestSequence(n);
if (n > 0) {
fillArray(numbers, n);
}
else {
return 0;
}
for (int i=0; i < n -1; ++i) {
if (numbers[i] == numbers[i + 1]) {
sequence.push_back(numbers[i]);
++counter;
if (added) {
added = false;
}
else {
sequence.push_back(numbers[i + 1]);
++counter;
added = true;
}
}
else {
if (counter >= largestCounter) {
largestCounter = counter;
for (int i=0; i < largestCounter; ++i) {
longestSequence[i] = sequence[i];
}
for (int i=0; i < largestCounter; ++i) {
sequence.pop_back();
}
}
else {
for (int i=0; i < counter; ++i) {
sequence.pop_back();
}
}
counter = 0;
}
}
if (largestCounter == 1) {
std::cout << numbers[n-1];
}
else {
for (int i=0; i < largestCounter; ++i) {
std::cout << longestSequence[i] << " ";
}
}
}
Промених на първия for цикъл в main частта да е до i < n вместо n - 1 и заработи (нямам идея какво промени или защо), но тогава се наблюдава ефектът, че ако въведа
4
2 2 2 2
връща output
2 2 2 2 2
и на всяко четно число 6, 8, 10 etc. добавя по още 1 двойка към вече добавените. Може ли да ми обясните защо става така и какъв е проблемът в задачата. Ще бъда много благодарен!