首页 > 代码库 > hud 2570 迷障(水 贪心)

hud 2570 迷障(水 贪心)

对给的药水浓度进行排序,对于小于解毒药水浓度的可以直接加上它的体积,对每次混合后的药水浓度进行记录,

大于解毒药水浓度就输出,注意你求得是百分比还是百分数。。。

#include<stdio.h>
#include<algorithm>
#include<iostream>
#include<string.h>
using namespace std;
int s[10005];
int main()
{
    int a,i,n,m,k;
    scanf("%d",&a);
    while(a--)
    {
        scanf("%d %d %d",&n,&m,&k);
        for(i=0;i<n;i++)
        {
            scanf("%d",&s[i]);
        }
        sort(s,s+n);
        if(s[0]>k)
        {
            printf("0 0.00\n");
            continue;
        }
        double sum1,sum=0,dd;
        int ans=0;
        for(i=0;i<n;i++)
        {
            if(s[i]<=k)
            {
                sum1=(double)m*s[i]/100.0;
                sum=(double)(sum1+sum*ans)/(ans+m)*1.0;
                ans+=m;
            }
            else
            {
                sum1=(double)m*s[i]/100.0;
                dd=sum;
                sum=(double)(sum1+sum*ans)/(ans+m)*1.0;
                if(sum*100>k)
                {
                    printf("%d %.2lf\n",ans,dd);
                    break;
                }
                else
                {
                    ans+=m;
                }
            }
        }
        if(i==n)
            printf("%d %.2lf\n",ans,sum);


    }
    return 0;
}