196
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