276592026-05-10 10:49:01KristófKét Mérőkanna *cpp17Elfogadva 100/10021ms19252 KiB
#include <iostream>
#include <vector>
#include <queue>
#include <algorithm>
using namespace std;
struct Node
{
int x,y;
string type;
};

pair<int,int> TA(int x,int y,int a,int b)
{
return {a,y};
}
pair<int,int> TB(int x,int y,int a,int b)
{
return {x,b};
}


pair<int,int> UA(int x,int y,int a,int b)
{
return {0,y};
}
pair<int,int> UB(int x,int y,int a,int b)
{
return {x,0};
}

pair<int,int> AB(int x,int y,int a,int b)
{
int uresb=b-y;
int attolt=min(x,uresb);
y+=attolt;
x-=attolt;
return {x,y};
}
pair<int,int> BA(int x,int y,int a,int b)
{
int uresa=a-x;
int attolt=min(y,uresa);
y-=attolt;
x+=attolt;
return {x,y};
}

int main()
{
    int cel,a,b;cin>>cel>>a>>b;
    vector<vector<Node>> parent(a+1,vector<Node> (b+1,{-1,-1,""}));
    queue<pair<int,int>> q;
    q.push({0,0});
    parent[0][0]={-2,-2,"SEMMI"};
    int ansx=-1,ansy=-1;
    while(q.size())
        {
        auto [x,y]=q.front();q.pop();
        if(y==cel)
            {
            ansx=x;
            ansy=y;
            break;
            }
        pair<int,int> newp;
        auto [cx,cy]=TA(x,y,a,b);
        if(parent[cx][cy].x==-1)
            {
            parent[cx][cy].x=x;
            parent[cx][cy].y=y;
            parent[cx][cy].type="TA";
            q.push({cx,cy});
            }

        pair<int,int> idk;
        idk=TB(x,y,a,b);
        cx=idk.first;
        cy=idk.second;
        if(parent[cx][cy].x==-1)
            {
            parent[cx][cy].x=x;
            parent[cx][cy].y=y;
            parent[cx][cy].type="TB";
            q.push({cx,cy});
            }

        idk=UA(x,y,a,b);
        cx=idk.first;
        cy=idk.second;
        if(parent[cx][cy].x==-1)
            {
            parent[cx][cy].x=x;
            parent[cx][cy].y=y;
            parent[cx][cy].type="UA";
            q.push({cx,cy});
            }

        idk=UB(x,y,a,b);
        cx=idk.first;
        cy=idk.second;
        if(parent[cx][cy].x==-1)
            {
            parent[cx][cy].x=x;
            parent[cx][cy].y=y;
            parent[cx][cy].type="UB";
            q.push({cx,cy});
            }

        idk=AB(x,y,a,b);
        cx=idk.first;
        cy=idk.second;
        if(parent[cx][cy].x==-1)
            {
            parent[cx][cy].x=x;
            parent[cx][cy].y=y;
            parent[cx][cy].type="AB";
            q.push({cx,cy});
            }

        idk=BA(x,y,a,b);
        cx=idk.first;
        cy=idk.second;
        if(parent[cx][cy].x==-1)
            {
            parent[cx][cy].x=x;
            parent[cx][cy].y=y;
            parent[cx][cy].type="BA";
            q.push({cx,cy});
            }
        }
    if(ansx==-1)
        {
        cout<<"NINCS";
        return 0;
        }
    vector<string> ans;
    while(parent[ansx][ansy].x!=-2)
        {
        ans.push_back(parent[ansx][ansy].type);
        pair<int,int> tmp={parent[ansx][ansy].x,parent[ansx][ansy].y};
        ansx=tmp.first;
        ansy=tmp.second;
        }
    reverse(ans.begin(),ans.end());
    cout<<ans.size()<<"\n";
    for(auto x:ans)cout<<x<<"\n";
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base100/100
1Elfogadva6/61ms316 KiB
2Elfogadva6/61ms316 KiB
3Elfogadva6/61ms316 KiB
4Elfogadva6/61ms316 KiB
5Elfogadva6/61ms316 KiB
6Elfogadva6/61ms316 KiB
7Elfogadva6/61ms316 KiB
8Elfogadva6/61ms316 KiB
9Elfogadva7/71ms564 KiB
10Elfogadva7/719ms17688 KiB
11Elfogadva7/77ms7220 KiB
12Elfogadva7/717ms19252 KiB
13Elfogadva8/821ms18760 KiB
14Elfogadva8/84ms5428 KiB
15Elfogadva8/814ms16048 KiB