为什么第一个测试点会出小问题。
Read 7, expect 9.
#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;
int sz_m[110], sz_v[110], n, t;
double value[110];
void px() { //排序(px)
for (int w = 0;w < n;w++) {
double minn = value[w];
int pos = w ;
for (int i = w;i < n;i++) {
if (value[i] < minn) {
minn = value[i];
pos = i;
}
}
swap(value[w],value[pos]);
swap( sz_m[w], sz_m[pos]);
swap( sz_v[w], sz_v[pos]);
}
}
int main() {
double value_sum = 0;
cin >> n >> t;
for (int i = 0;i < n;i++) {
cin >> sz_m[i] >> sz_v[i];
value[i] = 1.0 * sz_v[i] / sz_m[i];
}
px();
// zhuang13:
int tp = n-1;
while (t > 0 && tp > 0) {
if (t - sz_m[tp] >= 0) {
t -= sz_m[tp];
value_sum += sz_v[tp];
tp -= 1;
}
else {
value_sum += t * value[tp];
t = 0;
}
}
printf("%0.2f", value_sum);
}