mix_二八定律_sort

//
#include<bits/stdc++.h>
using namespace std;

const int N=1e5+6;
int in[N];

struct S{ double a,b,gap; }tt;
vector<S> v;

bool cmp( const S& x,const S& y )
{
    return ( x.gap==y.gap ) ? ( x.a > y.a ) : ( x.gap > y.gap ) ;
}

int main()
{
    int n,i,sum,sumt;

    while( cin>>n )
    {
        v.clear();
        sum=0;
        for( i=0;i<n;i++ )
        {
            cin>>in[i]; sum+=in[i];
        }
        sort( in,in+n,greater<int>() );

        sumt=0;
        for( i=0;i<n;i++ )
        {
            sumt+=in[i];
            tt.a=(double)(i+1)/n;
            tt.b=(double)sumt/sum;
            tt.gap=tt.b-tt.a;
            v.push_back( tt );
        }
        sort( v.begin(),v.end(),cmp );

        tt=v.front();
        printf("%.2lf %.2lf\n",tt.a*100,tt.b*100 );
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_63173957/article/details/124781132