1 solutions
-
0
C :
#include<stdio.h> #include<string.h> typedef struct{ double W; double F; double Val; }Food; Food food[1000]; int main() { int M, N; int i,j; while(scanf("%d %d",&M,&N)) { if(M == -1 && N == -1) { break; } memset(food,0,sizeof(food)); for(i=0;i<N;i++) { scanf("%lf %lf",&food[i].W,&food[i].F); food[i].Val = food[i].W/food[i].F; } //sort(food,food+N,Cmp); for(i=0;i<N;i++) { for(j=i+1;j<N;j++) { if(food[i].Val<food[j].Val) { Food temp; temp.W=food[i].W; temp.F=food[i].F; temp.Val=food[i].Val; food[i].W=food[j].W; food[i].F=food[j].F; food[i].Val=food[j].Val; food[j].W=temp.W; food[j].F=temp.F; food[j].Val=temp.Val; } } } double res = 0; for(i=0;i<N;i++) { if(M >= food[i].F) { M -= food[i].F; res += food[i].W; } else if(M == 0) { break; } else { double temp = M/food[i].F; res += food[i].W*temp; M = 0; } } printf("%.3lf\n",res); } return 0; }C++ :
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; typedef struct{ double W; double F; double Val; }Food; Food food[1000]; int Cmp(Food X, Food Y) { return X.Val > Y.Val; } int main() { int M, N; int i; while(scanf("%d %d",&M,&N)) { if(M == -1 && N == -1) { break; } memset(food,0,sizeof(food)); for(i=0;i<N;i++) { scanf("%lf %lf",&food[i].W,&food[i].F); food[i].Val = food[i].W/food[i].F; } sort(food,food+N,Cmp); // for(i=0;i<N;i++) // { // printf("%lf %lf %lf\n",food[i].W,food[i].F,food[i].Val); // } double res = 0; for(i=0;i<N;i++) { if(M >= food[i].F) { M -= food[i].F; res += food[i].W; } else if(M == 0) { break; } else { double temp = M/food[i].F; res += food[i].W*temp; M = 0; } } printf("%.3lf\n",res); } return 0; }
- 1
Information
- ID
- 20222
- Time
- 1000ms
- Memory
- 64MiB
- Difficulty
- (None)
- Tags
- # Submissions
- 0
- Accepted
- 0
- Uploaded By