###求助,第三个点wa
查看原帖
###求助,第三个点wa
61399
iawe楼主2020/10/10 20:44
#include<cstdio>
#include<cmath>
#define maxn 20000
using namespace std;
int n,t;
double sum;
typedef struct
{
    double val,num;
}Point;
Point P[maxn];
void qsort(int x,int y)
{
    int i=x,j=y,m=(i+j)/2;
    while(i<=j)
    {
        while(P[i].val<P[m].val)i++;
        while(P[j].val>P[m].val)j--;
        if(i<=j)
        {
            double bo1,bo2;
            bo1=P[i].val;
            P[i].val=P[j].val;
            P[j].val=bo1;
            bo2=P[i].num;
            P[i].num=P[j].num;
            P[j].num=bo2;
            i++;
            j--;
        }
    }
    if(i<y)qsort(i,y);
    if(j>x)qsort(x,j);
}
int main()
{
   scanf("%d%d",&n,&t);
   for(int i=1;i<=n;i++)
   {
       double a,b;
       scanf("%lf%lf",&a,&b);
       P[i].val=b/a;
       P[i].num=a;
   }
   qsort(1,n);
   for(int i=n;i>=1;i--)
   {
       if(t>P[i].num){
            sum+=P[i].val*P[i].num;
            t-=P[i].num;
       }
       else {
              if(t<=0)break;
              sum+=P[i].val*t;
              t-=P[i].num;
              break;
            }
   }
   printf("%.2f",sum);
   return 0;
}
2020/10/10 20:44
加载中...