思路:一打眼看有DP的思想,dp是模拟了这个过程,来看最后是否到达。如果我们可以准确地找出来到达的条件是什么,直接判断则更为简单,此题就是。不能有连续的三个数字出现
#include <iostream>
#include <cstdio>
#include<algorithm>
using namespace std;
int main()
{
int m,n;
int num[4000];
bool flag = true;
cin>>n>>m;
for ( int i=0; i<m; i++ ) {
scanf("%d",&num[i]);
if ( num[i]==1 || num[i]==n ) flag = false;
}
if ( flag ) {
sort( num,num+m);
for ( int i=2; i<m; i++ )
if ( num[i]==num[i-1]+1 && num[i]==num[i-2]+2 ) {
flag = false;
break;
}
}
if ( flag ) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}