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: