Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 3

#include<bits/stdc++.

h>

using namespace std;

int jugA,jugB,aim;

int valA,valB;

bool fill(char ch)


{
if(ch=='A')
{
if(valA==jugA)
{
return false;
}

return true;
}

else
{
if(valB==jugB)
{
return false;
}

return true;
}
}

bool empty(char ch)


{
if(ch=='A')
{
if(valA==0)
{
return false;
}

return true;
}

else
{
if(valB==0)
{
return false;
}

return true;
}
}

int pour(char ch1,char ch2)


{
if(ch1=='A')
{
if(valB+valA<=jugB)
{
return 1;
}

if(valA+valB>jugB)
{
return 2
}

return 0;
}

else
{
if(valB+valA<=jugA)
{
return 1;
}

if(valA+valB>jugA)
{
return 2
}

return 0;
}
}

int backtrack(int a,int b)


{
if(fill('A'))
{
valA=jugA;

backtrack(valA,valB);

valA=a;
}

if(fill('B'))
{
valB=jugB;

backtrack(valA,valB);

valB=b;
}

if(empty('A'))
{
valA=0;

backtrack(valA,valB);

valA=a;
}

if(empty('B'))
{
valB=0;

backtrack(valA,valB);

valB=b;
}

if(pour('A','B'))
{
int d;

d=pour('A','B');

if(d==1)
{
valB=valA+valB;

valA=0;
}

if(d==2)
{
valA=valA-(jugB-valB);

valB=jugB;
}

backtrack(valA,valB);

valA=a;

valB=b;
}

if(pour('B','A'))
{
backtrack(valA,valB);
}

return;
}

int main()
{
while(cin>>jugA>>jugB>>aim)
{
valA=0;

valB=0;

backtrack(valA,valB);
}
}

You might also like