比赛 |
20091026 |
评测结果 |
C |
题目名称 |
货物搬运 |
最终得分 |
0 |
用户昵称 |
Cloud |
运行时间 |
0.000 s |
代码语言 |
C++ |
内存使用 |
0.00 MiB |
提交时间 |
2011-10-26 20:21:30 |
显示代码纯文本
#include<cstdio>
#include<fstream>
using namespace std;
int main(void)
{
freopen("move.in","r",stdin);
freopen("move.out","w",stdout);
int n,y[10000],p;
int a;
int mid=0;
scanf("%d",&n);
a=n;
for(p=0;p<n;p++)
{
scanf("%d",&y[p]);
mid+=y[p];
}
mid/=n;
int m=0;
for(p=0;p<n;p++)
y[p]-=mid;
while(n)
{
int min=9999999;
int q;
for(q=0;q<a;q++)
if(abs(min)>abs(y[q])&&y[q]!=0)
{
p=q;
min=y[q];
}
int j,k;
if(p==0)j=a-1;
else j=p-1;
if(p==a-1)k=0;
else k=p+1;
if(abs(y[j]+y[p])>abs(y[k]+y[p]))
q=k;
else q=j;
if(y[q]==0)
{
if(q==j)q=k;
else q=j;
}
if(abs(y[p])>abs(y[q]))
{
m+=abs(y[q]);
y[p]+=y[q];
y[q]=0;
}
else
{
m+=abs(y[p]);
y[q]+=y[p];
y[p]=0;
}
n--;
}
printf("%d",m);
return 0;
}