比赛 |
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;
}