| 比赛 | 
    20091026 | 
    评测结果 | 
    C | 
    | 题目名称 | 
    抢修道路 | 
    最终得分 | 
    0 | 
    | 用户昵称 | 
    临轩听雨ゐ | 
    运行时间 | 
    0.000 s  | 
    | 代码语言 | 
    C++ | 
    内存使用 | 
    0.00 MiB  | 
    | 提交时间 | 
    2011-10-26 22:04:33 | 
显示代码纯文本
#include<cstdio>
#include<iostream>
using namespace std;
int main()
{
	freopen("roady.in","r",stdin);
	freopen("roady.out","w",stdout);
	int n,y[2001]={0};
	int p,j,k,l;
	scanf("%d",&n);
	for(p=1;p<=n;p++)
		scanf("%d",&y[p]);
	int m1=0,m2=0;
	for(p=2;p<=n;p++)
	{
		if(y[p]<y[p-1])
		{
			if(y[p]-y[p+1]!=0&&p+1<=n)
			{
				if(abs(y[p]-y[p-1])<abs(y[p]-y[p+1]))
					m1+=abs(y[p]-y[p-1]);
				else 
					m1+=abs(y[p]-y[p+1]);
			}
			else 
			{
				if(abs(y[p-1]-y[p-2])<abs(y[p-1]-y[p]))
					m1=abs(y[p-1]-y[p-2]);
				else 
					m1=abs(y[p-1]-y[p]);
			}
		}
	}
	y[0]=n/2;
	j=1;
	k=n;
	while(y[0])
	{
		l=y[j];
		y[j]=y[k];
		y[k]=l;
		j++;
		k--;
		y[0]--;
	}
	for(p=2;p<=n;p++)
	{
		if(y[p]<y[p-1])
		{
			if(y[p]-y[p+1]!=0&&p+1<=n)
			{
				if(abs(y[p]-y[p-1])<abs(y[p]-y[p+1]))
					m2+=abs(y[p]-y[p-1]);
				else 
					m2+=abs(y[p]-y[p+1]);
			}
			else 
			{
				if(abs(y[p-1]-y[p-2])<abs(y[p-1]-y[p]))
					m2=abs(y[p-1]-y[p-2]);
				else 
					m2=abs(y[p-1]-y[p]);
			}
		}
	}
	if(m1>m2)m1=m2;
	printf("%d",m1);
	return 0;
}