Symulacja stosu - błędna odpowiedź

0

Witam bardzo serdecznie.
Jest takie zadanie na SPOJ'u: http://pl.spoj.com/problems/STOS/
Mój kod w C++ wygląda następująco:

#include <iostream>
#include <string>

using namespace std;

int main()
{
    int i=0, stos [10], liczba;
    string znak;

    while (cin >> znak)
    {
        if (znak == "+")
        {
            cin >> liczba;
            if (i==10)
            {
                cout << ":(" << endl;
            }
            else
            {
                stos [i] = liczba;
                cout << ":)" << endl;
                i++;
            }
        }
        else if (znak == "-")
        {
            if (i<=0)
            {
                cout << ":(" << endl;
            }
            else
            {
                cout << stos [i-1];
                i--;
            }
        }
        else
        {
            cout << ":(" << endl;
        }
    }
    return 0;
}

Wynik programu jest raczej dobry, ale z jakiegoś powodu SPOJ pokazuje mi "Błędna odpowiedź". Może to być przyczyna endl, ale nie jestem do końca pewien.
PS. Takie pytanie. Jest jakaś różnica w szybkości działania endl, a \n?

2

Przecież to nawet dla przykładowego wejścia produkuje złe wyjście...
http://melpon.org/wandbox/permlink/qqOl6R8NgxDZkpTq

Nowe linie same się nie wypiszą.

PS. Takie pytanie. Jest jakaś różnica w szybkości działania endl, a \n?
Tak, endl woła flush.

0

Ehh... Jak ja lubię takie błędy. Dzięki wielkie :)
Tutaj działający kod:

#include <iostream>
#include <string>

using namespace std;

int main()
{
    int i=0, stos [10], liczba;
    string znak;

    while (cin >> znak)
    {
        if (znak == "+")
        {
            cin >> liczba;
            if (i==10)
            {
                cout << ":(" << endl;
            }
            else
            {
                stos [i] = liczba;
                cout << ":)" << endl;
                i++;
            }
        }
        else if (znak == "-")
        {
            if (i<=0)
            {
                cout << ":(" << endl;
            }
            else
            {
                cout << stos [i-1] << endl;
                i--;
            }
        }
        else
        {
            cout << ":(" << endl;
        }
    }
    return 0;
}

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