2016noip练习题3.随机

#include<cstdio>//2016noip练习题,3,随机(不开o2优化,过5个点,开o2优化,过九个点)
#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;
int a[1000005];
int n,s,t,ans;

inline int read(){//读入优化,由数字转为字符串,统一读入;
 char c;
 int x;
 while(c=getchar(),c<'0' || c>'9');
 x=c-'0';
 while(c=getchar(),'0'<=c && c<='9')
  x=x*10+c-'0';
 return x;
}

int main()
{
 freopen("random.in","r",stdin);
 freopen("random.out","w",stdout);
 n=read();
 for(int i=1;i<=n;i++)
 a[i]=read();
 ans=1000005;
 for(int i=1;i<=n;i++)
 {
  int maxn=1000005;
  for(int j=i+1;j<=n;j++)
  {
   s=abs(a[i]-a[j]);  //两数相间绝对值
   if(maxn>s)
   {
    maxn=s;
    t=(j-i+1);   //区间长度
    if(t<s)ans=min(ans,maxn);
    else{
     ans=min(ans,t);
     break;  //由于i与j距离越来越远,于是t不断加大,当t值较大,无法更新最小值时
             //退出j循环;
    }
   }
  }  
 }
 printf("%d",ans);
}

发布了20 篇原创文章 · 获赞 1 · 访问量 6337

猜你喜欢

转载自blog.csdn.net/yichengchangan/article/details/54896907
今日推荐