Mam problem . Mianowicie chciałbym żeby dany program działał dla kilku liczb(tyle ile poda użytkownik).Niestety nie umiem tego zrobić.Oto treść zadania:
Wejście :W pierwszej linii wejścia znajsuje się liczba n (1 ¬ n ¬ 100) oznaczająca liczbę nominałów w kasie. W kolejnych n liniach znajdują się ich opisy w postaci liczb wi i li oznaczające, że w kasie znajduje się li nominałów o wartości wi (1 ¬ wi ¬ 104 ). Wartości wi na wejściu nie powtarzają się. W kolejnym wierszu wejścia znajduje się liczba q - liczba zapytań. Następnie w q wierszach są zapytania w postaci liczby x (0 ¬ x ¬ 104 ).
Wyjście: Na wyjście wypisz q linii - w i-tej z nich odpowiedź na i-te zapytanie, tj. TAK, jeżeli kwotę x da się wydać za pomocą dostępnych banknotów, NIE w przeciwnym wypadku.
Oto mój kod:
#include <iostream>
#include <list>
using namespace std;
list <int> lista;
list <int> lista2;
void pop_front()
{
lista.pop_front();
}
int main()
{
int ilosc_nominalow,wartosc,liczba_testow,liczba,liczba_nominalow;
cin>>ilosc_nominalow;
for(int i=0; i<ilosc_nominalow; i++)
{
int wartosc;
cin>>liczba_nominalow;
lista2.push_front(liczba_nominalow);
cin>>wartosc;
lista.push_front(wartosc);
}
lista.sort();
lista.reverse();
lista2.sort();
int suma=0;
cin>>liczba;
suma=liczba;
for(int j=0; j<ilosc_nominalow; j++)
{
while(lista2.front()>0)
{
suma=suma-lista.front();
lista2.front()--;
if(suma==0)
{
cout<<"TAK"<<endl;
return 0;
}
}
pop_front();
lista2.pop_front();
}
if(suma!=0) cout<<"NIE"<<endl;
return 0;
}