diff options
author | Iru Cai <mytbk920423@gmail.com> | 2018-04-16 19:06:32 +0800 |
---|---|---|
committer | Iru Cai <mytbk920423@gmail.com> | 2018-04-16 19:06:32 +0800 |
commit | ad4e2420e822b8a115aac6124307b89447578782 (patch) | |
tree | 6f4db875081597e2e64dd4221a97bbff25503dcc /1.4/milk.c | |
parent | a7721767628a51b752ad3a96eb334734241dcd8b (diff) | |
download | usaco-ad4e2420e822b8a115aac6124307b89447578782.tar.xz |
1.2~1.5
Diffstat (limited to '1.4/milk.c')
-rw-r--r-- | 1.4/milk.c | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/1.4/milk.c b/1.4/milk.c new file mode 100644 index 0000000..f256d72 --- /dev/null +++ b/1.4/milk.c @@ -0,0 +1,52 @@ +/* +ID: mytbk921 +LANG: C +TASK: milk +*/ + +#include <stdio.h> +#include <stdlib.h> +#define MAXF 5000 + +typedef struct +{ + int price; + int amount; +}FARMER; + +int cmp(const void* x,const void* y) +{ + return ((FARMER*)x)->price-((FARMER*)y)->price; +} + +int main() +{ + int Total,nFarmers,minPrice; + FARMER farmers[MAXF]; + int i; + FILE *fin=fopen("milk.in","r"); + FILE *fout=fopen("milk.out","w"); + + fscanf(fin,"%d%d",&Total,&nFarmers); + for (i=0;i<nFarmers;i++) + fscanf(fin,"%d%d",&farmers[i].price,&farmers[i].amount); + fclose(fin); + qsort(farmers,nFarmers,sizeof(FARMER),cmp); + + minPrice=0; + for (i=0;Total&&i<nFarmers;i++){ + if (farmers[i].amount>Total){ + minPrice+=Total*farmers[i].price; + Total=0; + } + else{ + minPrice+=farmers[i].price*farmers[i].amount; + Total-=farmers[i].amount; + } + } + + fprintf(fout,"%d\n",minPrice); + fclose(fout); + return 0; +} + |