Witam przyszedłem tutaj, ponieważ mam problem z czasem w programie. Testerka wyświetla limit czasu. Zadanie polega na tym, że do zbiorników (jest ich N) wrzucane są beczki (jest ich M). Trzeba wypisać numer zbiornika i liczby napisane na beczkach podczas ich wyciągania (czyli odwrotnie od wpisywania). Użyłem tutaj stosów, ponieważ wydawały mi się najlepsze. Poniżej wkleję kod i zadanie.
Napisz program, który znając zawartość teczki znalezionej przez Jasia,
poda dla każdego zbiornika ciąg liczb, jaki powstanie przy wyciąganiu z niego beczek.
Wejście
N - liczba zbiorników (1 <= N <= 10^5)
M - liczba beczek (1 <= M <= 10^6)
W następnych M liniach po dwie liczby Xi, Yi,
odpowiednio liczba napisana na i-tej beczce (1 <= Xi <= 10^9)
i numer zbiornika, do którego trafi i-ta beczka (1 <= Yi <= N)
Wyjście
N lini, w i-tej linii napis "Zbiornik #i: " oraz ciąg oddzielonych spacjami liczb,
jakie byłyby odczytywane przy wyciąganiu kolejnych beczek z i-tego zbiornika.
Przykład
Dla danych wejściowych
3 7
12 2
5 1
100 1
37 3
1 2
2 1
23 2
poprawną odpowiedzią jest
Wyjście:
Zbiornik 1: 2 100 5
Zbiornik 2: 23 1 12
Zbiornik 3: 37
#include<iostream>
#include<stack>
#include<algorithm>
using namespace std;
int main()
{
ios_base::sync_with_stdio(0);
int n, m;
cin >> n >> m;
int tabx[m];
int taby[m];
stack <int> S;
for(int i=0; i<m; i++)
{
cin>>tabx[i]>>taby[i];
}
for(int i=1; i<=n; i++)
{
for(int j=0; j<m; j++)
{
if(taby[j]==i)
{
S.push(tabx[j]);
}
}
cout<<"Zbiornik "<<i<<": ";
while(!S.empty())
{
cout<<S.top()<<" ";
S.pop();
}
cout<<"\n";
}
return 0;
}