1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
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;
}
|