Problem Description
我啸51期间去杭州游玩,顺便比赛。
经过查询,去杭州要坐十几个小时的火车啊,身为巨巨的我啸肯定不能亏待了自己,所以在去杭州之前准备采购一番,让自己能舒舒服服的度过这十几个小时,所以,我啸来到了干果店,准备买一些干果到路上吃,干果店的标价有点特殊,xxx p q:代表xxx这种干果1块钱可以买p (kg),当前库存共有q (kg),我啸因为经费不够,不能任性,所以只能尽量买多一点干果。
Input
多组输入,第1行为两个整数n c(0 <= n <= 100 , 0 <= c <= 10000 ),代表干果店中有n种干果,和我啸一共带了c元钱。
之后第2到第n+1行,每行为:
xxx p q(xxx为字符串,长度<=100,p,q为整数,q是p的整数倍,1 <= p <= 10 , 0 <= q <= 100 )
代表xxx这种干果1块钱可以买p (kg),当前库存共有q (kg)
Output
每组数据输出一行,能买到的最多的干果重量
Example Input
2 10 aaa 1 5 bbb 2 2 3 10 aaa 1 5 bbb 2 10 ccc 3 9
Example Output
7
21
01
#include<stdio.h> |
02 | #include<stdlib.h> |
03 | struct |
04 | { |
05 | char name[101]; |
06 | int p; |
07 | int q; |
08 | }t,kind[101]; |
09 | void main() |
10 | { |
11 | int n,c,i,j,sum; |
12 | while (~ scanf ( "%d%d" ,&n,&c)) |
13 | { |
14 | sum=0; |
15 | for (i=0;i<n;i++) |
16 | scanf ( "%s %d %d" ,kind[i].name,&kind[i].p,&kind[i].q); |
17 | for (i=0;i<n-1;i++) |
18 | { |
19 | for (j=0;j<n-i-1;j++) |
20 | { |
21 | if (kind[j].p<kind[j+1].p) |
22 | { |
23 | t=kind[j];kind[j]=kind[j+1];kind[j+1]=t; |
24 | } |
25 | } |
26 | } |
27 | for (i=0;i<n;i++) |
28 | { |
29 | if (c>(kind[i].q/kind[i].p)) |
30 | { |
31 | sum+=kind[i].q; |
32 | c=c-kind[i].q/kind[i].p; |
33 | } |
34 | else {sum=sum+c*kind[i].p; break ;} |
35 | } |
36 | printf ( "%d\n" ,sum); |
37 | } |
38 | } |