码迷,mamicode.com
首页 > 其他好文 > 详细

Codeforces Round #371 (Div. 2)B. Filya and Homework

时间:2016-09-19 17:50:21      阅读:105      评论:0      收藏:0      [点我收藏+]

标签:

题目链接:http://codeforces.com/problemset/problem/714/B

题目大意:

  第一行输入一个n,第二行输入n个数,求是否能找出一个数x,使得n个数中的部分数加上x或部分数减去x ,n个数相等。

例如:5

   1 3 3 2 1

输出:

   YES

Init:

   x=1 情况,第一个数和最后一个数+x,第二三个数减去x ,则这n个数都为2(相等),故输出“YES”

解题思路:

  对于刚才举的例子 可知 n个数只有三个元素 1 2 3 只要使得 2-1==3-2 即可满足条件

  用一个数组存储n 个数,进行排序和查重。

  如果查重后的元素<=2 即只有一个元素或两个元素则肯定满足条件输出“YES”

  或者查重后的元素有三个 且 narr[1]-narr[0]==narr[2]-narr[1] (这里用到了排序) 则也输出“YES”

其他情况输出NO.

AC Code:

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int na[1000001];
 4 int main()
 5 {
 6     int n,i;
 7     while(scanf("%d",&n)!=EOF)
 8     {
 9         for(i=0; i<n; i++)
10             scanf("%d",&na[i]);
11         sort(na,na+n);
12         int cut=unique(na,na+n)-na;
13         if(cut<=2||(cut==3&&(na[1]-na[0]==na[2]-na[1])))
14             cout<<"YES"<<endl;
15         else
16             cout<<"NO"<<endl;
17     }
18     return 0;
19 }

 

Codeforces Round #371 (Div. 2)B. Filya and Homework

标签:

原文地址:http://www.cnblogs.com/A--Q/p/5885921.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!