248862026-02-16 14:03:22abcdVizeskannákcpp17Accepted 40/4014ms992 KiB
#include <bits/stdc++.h>
using namespace std;
using pii=pair<int,int>;

set<pii> memo;
queue<array<int,3>> q;

void add(int a,int b,int cur){
    if(!memo.count({a,b})){
        memo.insert({a,b});
        q.push({a,b,cur});
    }
}

int main(){
    int a,b,c,l;cin>>a>>b>>c>>l;
    q.push({a,0,0});
    memo.insert({a,0});
    while(!q.empty()){
        auto [x,y,cur]=q.front();
        q.pop();
        int z=a-x-y;
        if(x==l||y==l||z==l){
            cout<<cur<<'\n';return 0;
        }
        cur++;
        int d=min(x,b-y);
        add(x-d,y+d,cur);
        d=min(y,a-x);
        add(x+d,y-d,cur);
        d=min(x,c-z);
        add(x-d,y,cur);
        d=min(z,a-x);
        add(x+d,y,cur);
        d=min(y,c-z);
        add(x,y-d,cur);
        d=min(z,b-y);
        add(x,y+d,cur);
    }
    cout<<"-1\n";
}
SubtaskSumTestVerdictTimeMemory
base40/40
1Accepted0/01ms316 KiB
2Accepted0/01ms316 KiB
3Accepted1/11ms316 KiB
4Accepted1/11ms316 KiB
5Accepted1/11ms316 KiB
6Accepted1/11ms316 KiB
7Accepted1/11ms316 KiB
8Accepted1/11ms540 KiB
9Accepted1/11ms316 KiB
10Accepted1/11ms316 KiB
11Accepted1/11ms316 KiB
12Accepted1/11ms316 KiB
13Accepted2/21ms316 KiB
14Accepted2/21ms316 KiB
15Accepted2/21ms316 KiB
16Accepted2/21ms508 KiB
17Accepted2/21ms508 KiB
18Accepted2/21ms404 KiB
19Accepted2/21ms336 KiB
20Accepted2/22ms316 KiB
21Accepted2/21ms316 KiB
22Accepted2/21ms316 KiB
23Accepted2/21ms316 KiB
24Accepted2/28ms812 KiB
25Accepted2/26ms564 KiB
26Accepted2/214ms992 KiB
27Accepted2/29ms936 KiB