刚开始用C写的,编译器运行通过了就美滋滋的提交了,结果在OJ上报了错???点开一看,晕;
错误计数超过100?写的这么烂吗;
反思了一下,明明没有用cmath为什么会产生这样的错误,想着可能时因为犯懒用了sort函数,产生了什么我不知道的错误;反思不出来,百度了一下,看不懂,好像说是using namespace std用在C函数里就可能会出现这样的问题;嗯看来我的猜测没问题;要重写排序吗,当然是拒绝的,把C改成C++不就好了,改完果断AC;
#include <iostream>
#include <algorithm>
#include <iomanip>
using namespace std;
struct warehouse{
double J;
double F;
double per;
}J[1000];
bool cmp(warehouse a,warehouse b){
return a.per > b.per;
}
int main(){
int m, n;
while (cin>>m>>n && (m >= 0) && (n >= 0)){
for (int i = 0; i < n; i++){
cin>>J[i].J>>J[i].F;
J[i].per = J[i].J / J[i].F;
}
sort(J, J + n, cmp);
double sum = 0;
for (int i = 0; i < n; i++){
if (J[i].F <= m){
m -= J[i].F;
sum += J[i].J;
}
else{
sum += m*J[i].per;
break;
}
}
cout << setiosflags(ios::fixed)<<setprecision(3) << sum << endl;
}
return 0;
}