pat乙级 1020 月饼

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
typedef struct
{
    double st;
    double mo;
    double q;
} cake;
int main()
{

    int n, m;
    int i = 0;
    scanf("%d %d", &n, &m);

    cake moon[n];
    for (i = 0; i < n; i++)
    {
        scanf("%lf", &(moon[i].st));
    }
    for (i = 0; i < n; i++)
    {
        scanf("%lf", &(moon[i].mo));
    }
    for (int i = 0; i < n; i++)
    {
        moon[i].q = moon[i].mo / moon[i].st;
    }
    cake temp;
    for (int i = 0; i < n - 1; i++)
    {
        for (int j = i + 1; j < n; j++)
        {
            if (moon[i].q < moon[j].q)
            {
                temp = moon[i];
                moon[i] = moon[j];
                moon[j] = temp;
            }
        }
    }
    double max = 0;
    i = 0;
    double all=0.0;
    for(int i=0;i<n;i++){
        all=all+moon[i].st;
    }
    if (m >=all )
    {
        double allmo;
        for(int i=0;i<n;i++){
            allmo=allmo+moon[i].mo;
        }
        printf("%.2f",allmo);
    }
    else
    {
        while ((m - moon[i].st) > 0)
        {
            max = moon[i].mo + max;
            m = m - moon[i].st;
            i++;
        }
        max = max + m * moon[i].q;
        printf("%.2f", max);
    }
    return 0;
}

用结构体做的 花了好多时间啊 全是用在格式控制上 折腾半天

posted @ 2023-03-03 00:06  雨中白发人  阅读(8)  评论(0)    收藏  举报