summaryrefslogtreecommitdiff
path: root/1.4/milk.c
diff options
context:
space:
mode:
authorIru Cai <mytbk920423@gmail.com>2018-04-16 19:06:32 +0800
committerIru Cai <mytbk920423@gmail.com>2018-04-16 19:06:32 +0800
commitad4e2420e822b8a115aac6124307b89447578782 (patch)
tree6f4db875081597e2e64dd4221a97bbff25503dcc /1.4/milk.c
parenta7721767628a51b752ad3a96eb334734241dcd8b (diff)
downloadusaco-ad4e2420e822b8a115aac6124307b89447578782.tar.xz
1.2~1.5
Diffstat (limited to '1.4/milk.c')
-rw-r--r--1.4/milk.c52
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;
+}
+