Chef and new recipe Codechef Solution

ByBrokenprogrammers

Dec 14, 2022

Hello Programmers In this post, you will know how to solve the Chef and new recipe Codechef Solution.

One more thing to add, don’t directly look for the solutions, first try to solve the problems of Codechef by yourself. If you find any difficulty after trying several times, then you can look for solutions.

Problem

Rupsa recently started to intern under Chef. He gave her N type of ingredients of varying quantity A1, A2, …, AN respectively to store it. But as she is lazy to arrange them she puts them all in a storage box.

Chef comes up with a new recipe and decides to prepare it. He asks Rupsa to get two units of each type ingredient for the dish. But when she went to retrieve the ingredients, she realizes that she can only pick one item at a time from the box and can know its type only after she has picked it out. The picked item is not put back in the bag.

She, being lazy, wants to know the maximum number of times she would need to pick items from the box in the worst case so that it is guaranteed that she gets at least two units of each type of ingredient. If it is impossible to pick items in such a way, print -1.

Input

• The first line of the input contains an integer T denoting the number of test cases.
• The first line of each test case contains a single integer N denoting the number of different type of ingredients.
• The second line contains N space-separated integers A1, A2, …, AN denoting the quantity of each ingredient.

Output

• For each test case, output a single line containing an integer denoting the answer corresponding to that test case.

Constraints

• 1 ≤ T ≤ 10
• 1 ≤ N ≤ 105
• 1 ≤ Ai ≤ 104

• Subtask #1: 1 ≤ N ≤ 1000 (30 points)
• Subtask #2: original constraints (70 points)

```2
2
2 2
1
6
```

```4
2
```

Explanation

• In Example 1, she need to pick up all items.
• In Example 2, since there is only one type of ingredient, picking two items is enough.

Chef and new recipe CodeChef Solution in JAVA

```import java.io.BufferedReader;
class ChefRP {
public static void main(String[] args) throws java.lang.Exception{
int test_cases = Integer.parseInt(buff.readLine().trim());
while(test_cases-- > 0){
int min, num, flag=0;
int num_ingredients, sum=0;
String[] nums;
nums = buff.readLine().trim().split(" ");
num = Integer.parseInt(nums[0]);
if(num < 2)
flag = 1;
min = num;
sum += num;
for(int i = 1; i< num_ingredients; i++){
num = Integer.parseInt(nums[i]);
sum += num;
if(num < 2)
flag = 1;
if(num < min)
min = num;
}
if(flag == 1)
System.out.println("-1");
else
System.out.println((sum - (min - 2)));
}
}
}
```

Chef and new recipe CodeChef Solution in CPP

```#include <bits/stdc++.h> // Include every standard library
using namespace std;
typedef long long LL;
typedef pair<int, int> pii;
typedef pair<LL, LL> pll;
typedef pair<string, string> pss;
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef vector<pii> vii;
typedef vector<LL> vl;
typedef vector<vl> vvl;
double EPS = 1e-9;
int INF = 1000000005;
long long INFF = 1000000000000000005LL;
double PI = acos(-1);
int dirx[8] = { -1, 0, 0, 1, -1, -1, 1, 1 };
int diry[8] = { 0, 1, -1, 0, -1, 1, -1, 1 };
#define FOR(a, b, c) for (int(a) = (b); (a) < (c); ++(a))
#define FORN(a, b, c) for (int(a) = (b); (a) <= (c); ++(a))
#define FORD(a, b, c) for (int(a) = (b); (a) >= (c); --(a))
#define FORSQ(a, b, c) for (int(a) = (b); (a) * (a) <= (c); ++(a))
#define FORC(a, b, c) for (char(a) = (b); (a) <= (c); ++(a))
#define FOREACH(a, b) for (auto&(a) : (b))
#define REP(i, n) FOR(i, 0, n)
#define REPN(i, n) FORN(i, 1, n)
#define MAX(a, b) a = max(a, b)
#define MIN(a, b) a = min(a, b)
#define SQR(x) ((LL)(x) * (x))
#define RESET(a, b) memset(a, b, sizeof(a))
#define fi first
#define se second
#define mp make_pair
#define pb push_back
#define ALL(v) v.begin(), v.end()
#define ALLA(arr, sz) arr, arr + sz
#define SIZE(v) (int)v.size()
#define SORT(v) sort(ALL(v))
#define REVERSE(v) reverse(ALL(v))
#define SORTA(arr, sz) sort(ALLA(arr, sz))
#define REVERSEA(arr, sz) reverse(ALLA(arr, sz))
#define PERMUTE next_permutation
#define TC(t) while (t--)
string IntToString(LL a)
{
char x[100];
sprintf(x, "%lld", a);
string s = x;
return s;
}
LL StringToInt(string a)
{
char x[100];
LL res;
strcpy(x, a.c_str());
sscanf(x, "%lld", &res);
return res;
}
string GetString(void)
{
char x[1000005];
scanf("%s", x);
string s = x;
return s;
}
string uppercase(string s)
{
int n = SIZE(s);
REP(i, n)
if (s[i] >= 'a' && s[i] <= 'z')
s[i] = s[i] - 'a' + 'A';
return s;
}
string lowercase(string s)
{
int n = SIZE(s);
REP(i, n)
if (s[i] >= 'A' && s[i] <= 'Z')
s[i] = s[i] - 'A' + 'a';
return s;
}
void solve()
{
int n;
cin>>n;
int arr[n];
int mi = INT_MAX;
LL sum = 0;
for(int i=  0; i<n; i++) {cin>>arr[i]; if(arr[i]<mi) mi =arr[i]; sum+=arr[i];}
if(mi<2) cout<<-1<<"\n";
else{
cout<<sum-mi+2<<"\n";
}
}
int main()
{
int t;
cin>>t;
while(t--) solve();
return 0;
}```

Chef and new recipe CodeChef Solution in Python

```try:
n=int(input())
for i in range(0,n):
j=int(input())
l=list(map(int,input().split()))
if len(l)==1:
print(2)
continue
elif min(l)==1:
print(-1)
continue
else:
print(sum(l)-min(l)+2)
except EOFError as e:
print('')```

Disclaimer: The above Problem (Chef and new recipe) is generated by CodeChef but the solution is provided by BrokenProgrammers. This tutorial is only for Educational and Learning purpose.

Note:- I compile all programs, if there is any case program is not working and showing an error please let me know in the comment section. If you are using adblocker, please disable adblocker because some functions of the site may not work correctly.