問題はこちら
No.135 とりあえず1次元の問題 - yukicoder
ソートして隣りあう2つを見比べれば良い
int c(int*a,int*b){return*a-*b;} int main(){ int m,a[100010],s,i,n=0; scanf("%d",&m); for(i=0;i<m;i++)scanf("%d",a+i); qsort(a,m,4,c); for(i=1;i<m;i++){ s=a[i]-a[i-1]; if(s!=0&&(n==0||s<n))n=s; } printf("%d",n); return 0; }
読み捨てをするために配列の添字を逆にして短縮
a[1<<17],x,s,n; c(int*a,int*b){x=*a-*b;} main(m){ for(;~scanf("%d",a-m);m--); for(qsort(a,-m,4,c);++m;n=s&&!n|s<n?s:n)s=a[-m]-a[~m]; s=!printf("%d",n); }
147B