记录编号 |
29982 |
评测结果 |
WWWWWWAWWA |
题目名称 |
抢修道路 |
最终得分 |
20 |
用户昵称 |
Cloud |
是否通过 |
未通过 |
代码语言 |
C++ |
运行时间 |
0.102 s |
提交时间 |
2011-10-27 09:17:31 |
内存使用 |
0.24 MiB |
显示代码纯文本
#include<cstdio>
#include<iostream>
using namespace std;
int abs1(int a)
{
if(a>=0)return a;
else return -a;
}
int main(void)
{
freopen("roady.in","r",stdin);
freopen("roady.out","w",stdout);
int n,y[2001]={0},s[2001];
int p,q=0;
scanf("%d",&n);
for(p=1;p<=n;p++)
scanf("%d",&y[p]);
int m1=0,m2=0;
for(p=n;p>0;p--)
{
s[q]=y[p];
q++;
}
for(p=2;p<=n;p++)
{
if(y[p]>=y[p-1]&&y[p]>y[p+1]&&y[p-1]<=y[p+1]||y[p]<y[p-1])
{
if(abs1(y[p]-y[p-1])<abs1(y[p]-y[p+1]))
{
m1+=abs1(y[p]-y[p-1]);
y[p]=y[p-1];
}
else
{
m1+=abs1(y[p]-y[p+1]);
y[p]=y[p+1];
}
}
}
for(p=2;p<=n;p++)
{
if(s[p]>=s[p-1]&&s[p]>s[p+1]&&s[p-1]<=s[p+1]||s[p]<s[p-1])
{
if(abs1(s[p]-s[p-1])<abs1(s[p]-s[p+1]))
{
m2+=abs1(s[p]-s[p-1]);
s[p]=s[p-1];
}
else
{
m2+=abs1(s[p]-s[p+1]);
s[p]=s[p+1];
}
}
}
if(m1>m2)m1=m2;
printf("%d",m1);
return 0;
}