Geometric Mean Inequality Codechef Solution

Geometric Mean Inequality Codechef Solution

You are given an array A of length N containing the elements −1 and 1 only. Determine if it is possible to rearrange the array A in such a way that Ai is not the geometric mean of Ai−1 and Ai+1, for all i such that 2≤i≤N−1. Y is said to be the geometric mean of X and Z if Y2=X⋅Z.

Input Format

  • The first line contains a single integer T – the number of test cases. Then the test cases follow.
  • The first line of each test case contains an integer N – the size of the array A.
  • The second line of each test case contains N space-separated integers A1,A2,…,AN denoting the array A.

Output Format

  • For each test case, output Yes if it is possible to rearrange A in such a way that Ai is not the geometric mean of Ai−1 and Ai+1, where 2≤i≤N−1. Otherwise output No.
  • You may print each character of Yes and No in uppercase or lowercase (for example, yes, yEs, YES will be considered identical).

Constraints

  • 1≤T≤200
  • 3≤N≤1000
  • Ai∈{−1,1}

Sample Input 1
3
5
1 1 1 -1 -1
3
1 1 1
6
1 -1 -1 -1 -1 1

Sample Output 1
Yes
No
Yes

Explanation

  • Test case 1: We can rearrange the array A to [1,1,−1,−1,1]. One can see that Ai2≠Ai−1⋅Ai+1, for any 2≤i≤N−1.
  • Test case 2: None of the rearrangements of A satisy the given condition.

SOLUTION

Program: Geometric Mean Inequality Codechef Solution in Python

# cook your dish here
for _ in range(int(input())):
    n=int(input())
    a=0
    b=0
    l=list(map(int,input().split()))
    for i in range(n):
        if l[i]==-1:
            a+=1
        else:
            b+=1
    if(abs(a-b)<2):
        print("YES")
    elif(abs(a-b)==2):
        if a%2:
            print("NO")
        else:
            print("YES")
    else:
        print("NO")

Related:

Leave a Comment

one + nineteen =