第一个测试点WA了,求解
查看原帖
第一个测试点WA了,求解
123538
Ff_c109楼主2021/7/19 09:57

样例和其他的测试点都过了,但是第一个测试点居然读取到了一个'i'。请问这是为什么???

#include <iostream>
#include <algorithm>

#define int long long
#define double long double
#define float long double

using namespace std;

double c = 0;

struct cp
{
    int m;
    int v;
    double r;
};

#undef int
int main()
#define int long long
{
    double t;
    int n;
    cin >> n >> t;
    cp* a = new cp[n];
    for (int i = 0; i < n; i++) {
        cin >> a[i].m >> a[i].v;
        a[i].r = (double)a[i].v / (double)a[i].m;
    }
    auto cmp = [=](cp x, cp y) {
        return x.r > y.r;
    };
    sort(a, a + n, cmp);
    double &b = t;
    int i = 0;
    for (true; i < n && b - a[i].m >= 0; i++) {
        b -= a[i].m;
        c += a[i].v;
    }
    double ck;
    if (b != 0) {
        ck = ((double)b / a[i].m); 
        c += a[i].v * ck;
        b -= a[i].m * ck;
    }
    printf("%.2llf", c);
    return 0;
}
2021/7/19 09:57
加载中...