Bear and Three Balls题解

本文最后更新于:8 个月前

题目

Bear and Three Balls

描述

利马克是一只小北极熊。他有n个球,第i个球的大小为ti。

利马克想给他的三个朋友各送一个球。送礼物并不容易,为了让朋友们高兴,利马克必须遵守两条规则。

没有两个朋友可以得到相同大小的球。 没有两个朋友可以得到大小相差超过2的球。 例如,利马克可以选择大小为4、5和3的球,或者大小为90、91和92的球。但他不能选择尺寸为5、5和6的球(两个朋友会得到相同尺寸的球),也不能选择尺寸为30、31和33的球(因为尺寸30和33相差超过2)。

你的任务是检查Limak是否能选择满足上述条件的三个球。

输入

输入的第一行包含一个整数n(3≤n≤50)–Limak拥有的球的数量。

第二行包含n个整数t1,t2,…,tn(1≤ti≤1000),ti表示第i个球的大小。

输出

如果Limak能够选择三个不同大小的球,并且其中任何两个球的大小相差不超过2,则打印 “YES”(不带引号)。否则,打印 “NO”(不带引号)。

样例

输入1

4
18 55 16 17

输出1

YES

输入2

6
40 41 43 44 44 44

输出2

NO

输入3

8
5 972 3 4 1 4 970 971

输出3

YES

提示

在第一个例子中,有4个球,Limak能够选择其中的三个球来满足规则。他必须选择尺寸为18、16和17的球。
在第二个例子中,没有办法在不违反规则的情况下给三个朋友送礼物。
在第三个例子中,选择球的方法甚至不止一种。
选择大小为3、4和5的球。
选择尺寸为972、970、971的球。

补充

时间限制 2 秒
内存限制 256 MB
来源 FYOJ

题解

STL大法好!!!
直接k!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include<bits/stdc++.h>
using namespace std;
int s[10010];
int n;
int main() {
cin >> n;
for(int i = 0; i < n; i++) {
cin >> s[i];
}
sort(s,s+n);
int ans = unique(s,s+n)-s;
int b = 0;
for(int i = 0; i < ans; i++) {
if(s[i+1] == s[i]+1 && s[i+2] == s[i+1]+1) {
b = 1;
break;
}
}
if(b){
cout << "YES\n";
} else{
cout <<"NO\n";
}
return 0;
}

测评结果 通过
分数 100
时间 1 MS
内存 720 KB
语言 C++
代码长度 393


Bear and Three Balls题解
https://seth-blog.ml/posts/3224990952/
作者
Seth
发布于
2022年5月11日
更新于
2022年5月12日
许可协议