zoukankan      html  css  js  c++  java
  • CodeForces

    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.

    Examples

    Input

    1
    1
    

    Output

    YES
    

    Input

    3
    1 1 2
    

    Output

    YES
    

    Input

    4
    7 7 7 7
    

    Output

    NO
    

    Note

    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.

    题解:去看是否出现次数最多的是否占n个数的一半以上

    代码
     

    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #include<iostream>
    
    using namespace std;
    
    int main()
    {    
    
         int n;
         cin>>n;
         int a[105];
         int vis[1005]={0};
         memset(vis,0,sizeof(vis));
         for(int t=0;t<n;t++)
         {
         	scanf("%d",&a[t]);
         	vis[a[t]]++;
    	 }
    	 int maxn=0;
    	 for(int t=1;t<=1000;t++)
    	 {
    	 	if(vis[t]>=2)
    	 	{
    	 		if(vis[t]>maxn)
    	 		maxn=vis[t];
    		 }
    	 }
    	 if(maxn<=(n+1)/2)
    	 {
    	 	cout<<"YES"<<endl;
    	 }
    	 else
    	 {
    	 	cout<<"NO"<<endl;
    	 }
    	return  0;
    }
  • 相关阅读:
    计算机的组成与操作系统
    面向对象初识
    规范化目录
    装饰器进阶
    装饰器练习
    装饰器
    内置函数二 闭包
    生成器 推导式 练习
    迭代器 递归 格式化 练习
    生成器 推导式 内置函数
  • 原文地址:https://www.cnblogs.com/Staceyacm/p/10781886.html
Copyright © 2011-2022 走看看