14702022-11-01 19:48:32ka3mepVizeskannákcpp11Runtime error 2/4064ms63264 KiB
#include <bits/stdc++.h>
#define ff cout<<"VALAMI"<<endl;
#define rr cout<<"VALAMI";
#define forn(n) for(int i = 0; i<n; ++i)
//#define int long long

using namespace std;

int A,B,C;
vector<vector<vector<bool>>> Tolti;

int bfs(vector<int> kez, int n)
{

    queue<vector<int>> q;
    queue<int> valasz;
    valasz.push(0);
    q.push(kez);
    vector<int> harmas(3,0);
    while(!q.empty())
    {
        vector<int> soros = q.front();q.pop();
        int aa = soros[0];  //cout<<"     "<<aa<<endl;
        int bb = soros[1];  //cout<<bb<<endl;
        int cc= soros[2];   //cout<<cc<<endl;
        int V = valasz.front();
        valasz.pop();
        if(aa==n||bb==n||cc==n)
        {
            return V;
        }

        else if(aa>0)
        {

            if(!Tolti[max(aa-B+bb,0)][min(B, bb+aa)][cc])
                {
                    harmas[0] = max(aa-B+bb,0);
                    harmas[1] = min(B, bb+aa);
                    harmas[2] = cc;
                    q.push(harmas);valasz.push(V+1);
                }
            if(!Tolti[max(aa-C+cc,0)][bb][min(C,cc+aa)])
                {
                    harmas[0] = max(aa-C+cc,0);
                    harmas[1] = bb;
                    harmas[2] = min(C,cc+aa);
                    q.push(harmas);valasz.push(V+1);
                }
        }
        else if(bb>0)
        {
            if(!Tolti[min(A, bb+aa)][max(bb-A+aa,0)][cc])
                {
                    harmas[0] = min(A, bb+aa);
                    harmas[1] = max(bb-A+aa,0);
                    harmas[2] = cc;
                    q.push(harmas);valasz.push(V+1);
                }
            if(!Tolti[aa][max(bb-C+cc,0)][min(C, bb+cc)])
                {
                    harmas[0] = aa;
                    harmas[1] = max(bb-C+cc,0);
                    harmas[2] = min(C, bb+cc);
                    q.push(harmas);valasz.push(V+1);
                }
        }
        else if(cc>0)
        {
            if(!Tolti[min(A, cc+aa)][bb][max(0, cc-A+aa)])
                {
                    harmas[0] = min(A, cc+aa);
                    harmas[1] = bb;
                    harmas[2] = max(0, cc-A+aa);
                    q.push(harmas);valasz.push(V+1);
                }
            if(!Tolti[aa][min(B, cc+bb)][max(0,cc-B+bb)])
                {
                    harmas[0] = aa;
                    harmas[1] = min(B, cc+bb);
                    harmas[2] = max(0,cc-B+bb);
                    q.push(harmas);valasz.push(V+1);
                }
        }
        Tolti[aa][bb][cc] = 1;
    }
    return -1;

}

void solve()
{
    int n;
    cin>>A>>B>>C;
    cin>>n;
    int MAZ = max(A, max(C,B));
    vector<bool> mindegy1 (MAZ,0);
    vector<vector<bool>> mindegy2;
    forn(MAZ){mindegy2.push_back(mindegy1);}
    forn(MAZ){Tolti.push_back(mindegy2);}

    vector<int> kkk(3,0);
    kkk[0] = A;

    int ans = bfs(kkk,n);
    cout<<ans<<endl;
}

int32_t main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);


    solve();


    /*
    int t;
    cin>>t;
    while(t--)
    {
        solve();
    }

    */


}
SubtaskSumTestVerdictTimeMemory
base2/40
1Runtime error0/03ms2060 KiB
2Runtime error0/04ms3624 KiB
3Runtime error0/13ms3248 KiB
4Runtime error0/14ms4064 KiB
5Runtime error0/13ms3468 KiB
6Runtime error0/13ms3820 KiB
7Runtime error0/13ms3688 KiB
8Accepted1/14ms4000 KiB
9Accepted1/14ms4056 KiB
10Runtime error0/13ms3504 KiB
11Runtime error0/13ms3552 KiB
12Runtime error0/13ms3708 KiB
13Runtime error0/248ms62572 KiB
14Runtime error0/248ms62884 KiB
15Runtime error0/248ms63232 KiB
16Runtime error0/227ms63096 KiB
17Runtime error0/234ms31256 KiB
18Runtime error0/264ms63264 KiB
19Runtime error0/239ms63180 KiB
20Runtime error0/246ms63256 KiB
21Runtime error0/235ms62856 KiB
22Runtime error0/254ms62840 KiB
23Runtime error0/230ms62036 KiB
24Runtime error0/235ms62728 KiB
25Runtime error0/232ms62784 KiB
26Runtime error0/235ms62776 KiB
27Runtime error0/235ms62760 KiB