第一个没过
#include<iostream>
#include<iomanip>
#include<vector>
using namespace std;
int N, T;
int main() {
cin >> N >> T;
vector<float> m(N+1), v(N),p(N);
for (int i=0; i < N; i++) {
cin >> m[i] >> v[i];
p[i] = v[i] / m[i];
}
for (int i = 0; i < N-1; i++) {
for (int j = 0; j < N-i-1; j++) {
if (p[j] < p[j + 1]) {
swap(p[j], p[j + 1]);
swap(m[j], m[j + 1]);
swap(v[j], v[j + 1]);
}
}
}
float contain = 0;
double ans = 0;
int idx = 0;
while (contain + m[idx] < T) {
contain += m[idx];
ans += v[idx];
idx++;
}
if (contain < T) {
ans += (T - contain) * p[idx];
}
cout <<fixed<< setprecision(2)<<ans<< endl;
}