点一WA求助,80
查看原帖
点一WA求助,80
589353
Skilver楼主2021/12/4 17:06
#include<iostream>
#include<iomanip>
using namespace std;
void exchange1(double*a, double*b) {
	double temp = *a;
	*a = *b;
	*b = temp;
}
int main() {
	int N, T;
	cin >> N;
	cin >> T;
	double m[101] = { 0 };//质量
	double v[101] = { 0 };//价值
	double perv[101] = { 0 };//单位质量金币的价值
	for (int i = 1; i <= N; i++) {
		cin >> m[i];
		cin >> v[i];
		perv[i] = v[i] / m[i];
	}
	double vsum = 0;//总价值
	
	for (int i = 1; i <= N; i++) {
		for (int j = i + 1; j <= N; j++) {
			if (perv[j] > perv[i]) {
				exchange1(&perv[j], &perv[i]);
				exchange1(&m[j], &m[i]);
				exchange1(&v[j], &v[i]);
			}
		}
	}int i = 1;
	while (T > 0) {
		if (T >= m[i]) {
			T -= m[i];
			vsum += v[i];
		}
		else {
			vsum += T * v[i] / m[i];
			T = 0;
		}
		i++;
	}
	cout << fixed << setprecision(2) << vsum;
}
2021/12/4 17:06
加载中...