Codeforces 1807 b. grab the candies Solution

problem question link

B. Grab the Candies

Mihai and Bianca are playing with bags of candies. They have a row a� of n� bags of candies. The i�-th bag has ai�� candies. The bags are given to the players in the order from the first bag to the n�-th bag.

If a bag has an even number of candies, Mihai grabs the bag. Otherwise, Bianca grabs the bag. Once a bag is grabbed, the number of candies in it gets added to the total number of candies of the player that took it.

Mihai wants to show off, so he wants to reorder the array so that at any moment (except at the start when they both have no candies), Mihai will have strictly more candies than Bianca. Help Mihai find out if such a reordering exists.

Input

The first line of the input contains an integer t� (1≤t≤10001≤�≤1000) — the number of test cases.

The first line of each test case contains a single integer n� (1≤n≤1001≤�≤100) — the number of bags in the array.

The second line of each test case contains n� space-separated integers ai�� (1≤ai≤1001≤��≤100) — the number of candies in each bag.

Output

For each test case, output “YES” (without quotes) if such a reordering exists, and “NO” (without quotes) otherwise.

You can output the answer in any case (for example, the strings “yEs”, “yes”, “Yes” and “YES” will be recognized as a positive answer)

INPUT:

3
4
1 2 3 4
4
1 1 1 2
3
1 4 3

OUTPUT :

YES
NO
NO

Codeforces 1807 b. grab the candies solution in C++

#include<iostream>
using namespace std;
int main()
{
int a,n,c[101],b=0,m=0;
cin>>a;
for(int i=0;i<a;i++)
{
cin>>n;
for(int j=0;j<n;j++)
{
cin>>c[j];
if(c[j]%2==0)
m+=c[j];

else
b+=c[j];
}
if(m>b)
{
cout<<"YES"<<endl;//codeforces 1807 b. grab the candies solution
}
else
cout<<"NO"<<endl;
b=0;
m=0;
}

}

Codeforces 1807 b. grab the candies solution in C

#include<stdio.h>

int main()
{
    int a, n, c[101], b = 0, m = 0;
    scanf("%d", &a);
    
    for (int i = 0; i < a; i++)
    {
        scanf("%d", &n);
        
        for (int j = 0; j < n; j++)
        {
            scanf("%d", &c[j]);
            
            if (c[j] % 2 == 0)
                m += c[j];
            else
                b += c[j];
        }
        
        if (m > b)
        {
            printf("YES\n"); // Grab the Candies solution
        }
        else
        {
            printf("NO\n");
        }
        
        b = 0;
        m = 0;
    }

    return 0;
}

Previous problem: Codeforces1807A. Plus or Minus(Div 4)

3 thoughts on “Codeforces 1807 b. grab the candies Solution”

Leave a Comment