#include<bits/stdc++.h>
#include<math.h>
using namespace std;
const int maxn=2e5+5;
typedef long long ll;
int n;
int a[maxn];
int main()
{
while(scanf("%d",&n)!=EOF)
{
int y=1;
for(int i=0;i<n;i++)
{
scanf("%d",&a[i]);
if(i>0)
{
if(abs(a[i]-a[i-1])!=1)
{
y=abs(a[i]-a[i-1]);
}
if(a[i]==a[i-1])
{
printf("NO\n");
return 0;
}
}
}
for(int i=1;i<n;i++)
{
if(abs(a[i]-a[i-1])!=1&&abs(a[i]-a[i-1])!=y)
{
printf("NO\n");
return 0;
}
///此行的最后一个不能直接跳到下一行的第一个
if(a[i]%y==1&&a[i]-a[i-1]==1&&y!=1)
{
printf("NO\n");
return 0;
}
///到了最右边 他前面的数不能比他大1 因为大1说明 只能从左往右走 真是情况大1是从优右往左走
if(a[i]%y==0&&a[i-1]-a[i]==1&&y!=1)
{
printf("NO\n");
return 0;
}
}
printf("YES\n");
printf("1000000000 %d\n",y);
}
return 0;
}
Permutation Cycle
最新推荐文章于 2022-02-18 23:21:12 发布