#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <string>
#include <algorithm>
using namespace std;
const int N = 1005;
struct node {
int J;
int F;
}t[N];
bool cmp(const node a, const node b) {
return double(a.J)/double(a.F) > double(b.J)/double(b.F);
}
int n, m;
int main() {
int i;
while(~scanf("%d%d", &m, &n)) {
if(n == -1 && m == -1) break;
for(i = 0; i < n; i++) {
scanf("%d%d", &t[i].J, &t[i].F);
}
sort(t, t+n, cmp);
double sum = 0;
for(i = 0; i < n; i++) {
if(m >= t[i].F) {
m -= t[i].F;
sum += t[i].J;
}
else {
sum += (double)(t[i].J*m) / t[i].F;
m = 0;
}
if(m == 0) break;
}
printf("%.3lf\n", sum);
}
return 0;
}

被折叠的 条评论
为什么被折叠?



