样例和其他的测试点都过了,但是第一个测试点居然读取到了一个'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;
}