记录编号 |
91437 |
评测结果 |
WWWTTTWTTT |
题目名称 |
[UVa 11300]分金币 |
最终得分 |
0 |
用户昵称 |
wolf |
是否通过 |
未通过 |
代码语言 |
C++ |
运行时间 |
7.789 s |
提交时间 |
2014-03-14 19:15:07 |
内存使用 |
0.28 MiB |
显示代码纯文本
#include<iostream>
#include<fstream>
#include<vector>
using namespace std;
vector<int> people;
vector<int> sum;
vector<int> number;
void work(int no,int n,int eq){
int AA=no;
int BB=no;
int rest=people[no]-eq;
int distrance1,distrance2,a;
for(int i=0;i!=n/2;i++){
--AA;
++BB;
if(AA==-1)
AA=n-i;
if(BB==n)
BB=0;
if(people[AA]<eq){
a=eq-people[AA];
if(AA>no)
distrance1=no+n-AA;
else
distrance1=no-AA;
if(rest>=a){
rest-=a;
people[AA]+=a;
sum.push_back(distrance1*a);
}else{
people[AA]+=rest;
sum.push_back(distrance1*rest);
rest=0;
break;
}
}
if(people[BB]<eq){
a=eq-people[BB];
if(BB<no)
distrance2=n-no+BB;
else
distrance2=BB-no;
if(rest>=a){
rest-=a;
people[BB]+=a;
sum.push_back(distrance2*a);
}else{
people[BB]+=rest;
sum.push_back(distrance2*rest);
rest=0;
break;
}
}
}
people[no]=eq;
}
int main(){
ifstream AA("Wealth.in");
ofstream BB("Wealth.out");
int equally;
int n,all=0,a=0,b;
while(AA>>n){
if(n==0)
continue;
for(int i=0;i!=n;i++){
AA>>b;
people.push_back(b);
}
for(int i=0;i!=n;i++){
all+=people[i];
}
equally=all/n;//平均值求值结束
///////////error
for(int i=0;i!=n;i++){
int e=equally;
int t=0;
for(int q=0;q!=n;q++){
if(people[q]>e){
e=people[q];
t=q;
}
}
work(t,n,equally);
}
///////////
for(int i=0;i!=sum.size();i++){
a+=sum[i];
}
sum.resize(0);
people.resize(0);
number.push_back(a);
all=0;
a=0;
}
for(int i=0;i!=number.size();i++){
BB<<number[i]<<endl;
}
return 0;
}