Time Limit:2000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u
Description
Yaroslav has an array that consists of n integers. In one second Yaroslav can swap two neighboring array elements. Now Yaroslav is wondering if he can obtain an array where any two neighboring elements would be distinct in a finite time.
Help Yaroslav.
Input
The first line contains integer n (1 ≤ n ≤ 100) — the number of elements in the array. The second line contains n integers a1, a2, ..., an (1 ≤ ai ≤ 1000) — the array elements.
Output
In the single line print "YES" (without the quotes) if Yaroslav can obtain the array he needs, and "NO" (without the quotes) otherwise.
Sample Input
11
YES
31 1 2
YES
47 7 7 7
NO
Hint
In the first sample the initial array fits well.
In the second sample Yaroslav can get array: 1, 2, 1. He can swap the last and the second last elements to obtain it.
In the third sample Yarosav can't get the array he needs.
#include <iostream>
#include <cstdio>
using namespace std;
int n,A[1001],temp;
int maxnum;
int main()
{
scanf("%d",&n);
maxnum=0;
for(int i=0;i<n;i++){
scanf("%d",&temp); A[temp]++;
if(A[temp]>maxnum) maxnum=A[temp];
}
if(maxnum>(n+1)/2) printf("NO\n");
else printf("YES\n");
return 0;
}