cf B. Petya and Staircases
6373 ワード
http://codeforces.com/contest/362/problem/B
まずソートして、1番目と最後の1つが汚れているかどうかを判断し、もしそうであればNOを出力し、その中の3つが汚れているかどうかを判断し、もしそうであればNOを出力し、そうでなければYESを出力する.
View Code
まずソートして、1番目と最後の1つが汚れているかどうかを判断し、もしそうであればNOを出力し、その中の3つが汚れているかどうかを判断し、もしそうであればNOを出力し、そうでなければYESを出力する.
1 #include <cstdio>
2 #include <cstring>
3 #include <algorithm>
4 #define LL __int64
5 #define maxn 100010
6 using namespace std;
7
8 LL a[maxn];
9 LL n,m;
10
11 int main()
12 {
13 while(scanf("%I64d%I64d",&n,&m)!=EOF)
14 {
15 for(int i=0; i<m; i++)
16 {
17 scanf("%I64d",&a[i]);
18 }
19 sort(a,a+m);
20 bool flag=true;
21 for(int i=0; i<m; i++)
22 {
23 if(a[i+1]-a[i]==1&&a[i+2]-a[i+1]==1&&i+2<m)
24 {
25 flag=false;
26 printf("NO
");
27 break;
28 }
29 else if(i==m-1||i==0)
30 {
31 if(a[i]==n||a[i]==1)
32 {
33 printf("NO
");
34 flag=false;
35 break;
36 }
37 }
38 }
39 if(flag) printf("YES
");
40 }
41 return 0;
42 }
View Code