中位数uva11300

来源:互联网 发布:java奇数偶数的和 编辑:程序博客网 时间:2024/05/18 19:22

感觉解题的思路非常好,详见《算法入门经典》

下面是代码:

#include<iostream>#include<algorithm>#include<cmath>using namespace std;const int MAX=1000100;long long A[MAX],C[MAX],sum;int N;int main(){    while(cin>>N)    {        sum=0;        for(int i=1;i<=N;i++)        {            cin>>A[i];            sum+=A[i];        }        long long M=sum/N;        C[0]=0;        for(int i=1;i<N;i++)        C[i]=C[i-1]+A[i]-M;        sort(C,C+N);        long long x1=C[N/2],ans=0;        for(int i=0;i<N;i++)        ans+=abs(x1-C[i]);        cout<<ans<<endl;    }    return 0;}



0 0
原创粉丝点击