**Tom and Desserts -** **Editorial**

Author : R Shyam Sundar (shyam1909)

Difficulty : Cakewalk

Prerequisities : None

**Problem:**

Tom has 3 different types of desserts.

Type – A : Untasty dessert that could relinquish tom if he is dizzy.

Type – B : Tasty dessert that could relinquish tom if he is dizzy.

Type – C : Tasty dessert that makes tom dizzy. If he is dizzy, he falls asleep.

What is the *maximum number* of *tasty desserts* that tom could eat *without falling asleep?*

**Logic:**

Tom should eat a dessert of Type-A or Type-B immediately after eating Type-C dessert. If the number of desserts of Type-C is zero left, then he should eat the remaining Type-B desserts.

If there is no Type-A or Type-B dessert to eat after eating Type-C dessert, Tom should stop at this moment.

Calculate the number of tasty deserts (Type B,C) eaten.

Now this logic can be transformed into if-else statements, given the number of desserts of type A,B,C.

**Approach:**

#include<bits/stdc++.h>

using namespace std;

typedef long long int ll;

void solve()

{

ll a,b,c;

cin >> a >> b >> c;

if(c > a)

{

ll ans = 0;

ans += a;

c -= a;

if(c > b)

{

cout << (ans + (2 * b) + 1) << “\n”;

return;

}

else if(c == b)

{

cout << (ans + (2 * b)) << “\n”;

return;

}

else

{

cout << (ans + (2 * c) + (b - c)) << “\n”;

return;

}

}

else if(c == a)

{

cout << (c + b) << “\n”;

return;

}

else // c < a

{

cout << (c + b) << “\n”;

return;

}

}

int main()

{

int t;

cin >> t;

while(t–)

{

solve();

}

return 0;

}

Source code as png: