znajdowanie w ciagu

0

Cześć, robię sobie zadanie i coś mi ciągle wywala błąd "przekroczono limit czasu" jak u siebie odpalam to nawet to działa. Ktoś powie czemu algorytm tak zamula? Z góry dzięki.

#include <iostream>
using namespace std;
int main() {
    int pierwsza, kolejna, min, max;
    int pozycjamax = 1;
    int pozycjamin = 1;
    int licznik = 1;
    cin >> pierwsza;
    max = pierwsza;
    min = pierwsza;
    do {
        cin >> kolejna;
        if (kolejna != 0) {
            if (kolejna > -501) {
                if (kolejna < 501) {
                    licznik++;
                    if (kolejna < min) { pozycjamin = licznik; min = kolejna;
                    }
                    if (kolejna >= max) { pozycjamax = licznik; max = kolejna; }
                }
            }
        }
    } while (kolejna != 0);
    cout << min << endl;
    cout << pozycjamin << endl;
    cout << max << endl;
    cout << pozycjamax << endl;
    return 0;
}
0

Na pewno problemem jest czas wykonania, a nie błędne wyniki?

Być może zadanie mocno zależy od samych operacji I/O, umieść poniższe wywołania na samym początku funkcji main():

    std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr);
2

Przecież w treści zadania nie ma napisane, że 0 kończy dane wejściowe.
To jest powód dla, którego twoja pętla działa w nieskończoność
Nawet przykład w treści nie zawiera zera.

2

Ale tam nigdzie nie jest powiedziane, że wejście jest zakończone liczbą 0.

0

@MarekR22: O cholera! Tego się nie spodziewałem. Dzięki, dzisiaj moje zwoje mózgowe są wyjątkowo proste, jak widać mam nawet problemy z czytaniem ze zrozumieniem.

1 użytkowników online, w tym zalogowanych: 0, gości: 1