比赛 20091026 评测结果 C
题目名称 抢修道路 最终得分 0
用户昵称 Cloud 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2011-10-26 21:53:36
显示代码纯文本
#include<cstdio>
#include<iostream>
using namespace std;
int main(void)
{
	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;
}