80求助
查看原帖
80求助
1054699
_NOCl_楼主2023/8/30 17:27

第一个没过

#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;
}
2023/8/30 17:27
加载中...