zoj 2433 Highways(纠结,水)

从大一就看这道题,因为看不懂,放到现在,今天大一的问,又看,有翻译,哈哈。题目不难,关键是要知道

1:要取得最短,必须找到间隔最短的两个村庄

2:这间隔不能出现在两端

3:仅仅纠结我个人而已,以为不会是那样的错误,每个样例后面应该加‘\n’的,但没有,应该返回PE啊,结果,WA找来找去都找不到错误。

#include<stdio.h>
int main()
{
	int T,n;
	scanf("%d",&T);
	int min,s1,s2;
	int a[50005],i;
	while(T--)
	{
		int flag=0;
		scanf("%d",&n);
		if(n<=3) flag=1;
		for(i=2;i<=n;i++)
			scanf("%d",&a[i]);
		min=a[n];
		for(i=2;i<=n-2;i++)
		{
			if((a[i+1]-a[i])<=min) 
			{
				min=a[i+1]-a[i];
				s1=i;
				s2=i+1;
			}
		}
		if(flag==1) printf("0\n");
		else
		{
			printf("%d\n",a[n]+min);
			printf("%d %d %d %d\n",s2,n-n+1,n,s1);
		}
		if(T) printf("\n");//z这里没加竟然不是PE
	}
	return 0;
}


你可能感兴趣的:(zoj 2433 Highways(纠结,水))