255
Cerința
Se dă o stivă inițial vidă. Să se efectueze Q operații de forma:
1 x: Se adaugă x în stivă.
Exemplu
qstiva.in
8 1 12 2 1 1 3 2 1 2 1 12 3 13 2
qstiva.out
0 1
#include <bits/stdc++.h>
using namespace std;
ifstream cin("qstiva.in");
ofstream cout("qstiva.out");
int n , S , Q , op , x , a[100001];
bitset <1001> dp[100001];
int main()
{
cin >> Q;
for(int k = 1 ; k <= Q ; ++k)
{
cin >> op;
if(op == 1)
{
cin >> x;
a[++n] = x;
dp[0][0] = 1;
dp[n].reset();
for(int i = 0 ; i <= 1000 ; ++i)
{
if(dp[n - 1][i] == 1) dp[n][i] = 1;
if(i >= a[n])
if(dp[n - 1][i - a[n]] == 1) dp[n][i] = 1;
}
}
if(op == 2) --n;
if(op == 3)
{
cin >> S;
cout << dp[n][S] << '\n';
}
}
return 0;
}
Comentarii