WA了好几次。。。。。。。。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define STOP system("pause")//仔细分析一下其实发现并不难,修两条路,第一条的起点必须是xn,第二条的终点必须是
int main() //x1,若想总路长最短,那么,第一条的终点和第二条的起点必须相邻
{ // 并且第一条终点必须在第二条起点的前边
int ncase,i,n,a[50010],min,len,from1,to1,from2,to2;
scanf("%d",&ncase); //这样,简单的把图画出来,就会发现,最短路长 就是xn的距离加上
while(ncase--) //所有城市中,相邻两个的最短距离。。。。 end
{
scanf("%d",&n);
for(i=2;i<=n;i++)
scanf("%d",&a[i]);
if(n<=3)
printf("0\n");
else
{
min=a[n];
from2=n,to1=1;
for(i=2;i<=n-2;i++)//这里不要写成i<=n-1,因为这WA了好几次
if((a[i+1]-a[i])<=min)
{
min=a[i+1]-a[i];
from1=i+1;
to2=i;
}
len=a[n]+min;
printf("%d\n%d %d %d %d\n",len,from1,to1,from2,to2);
}
if(ncase>=1)
printf("\n");
}
return 0;
}