fbpx

Problema #1924 – QStiva – Rezolvari PBInfo

de Mihai-Alexandru

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

S-ar putea sa iti placa