USACO 1.4.1_milk
阿新 • • 發佈:2018-12-12
/*
ID: cjn77881
LANG: C++
TASK: milk
*/
#include <stdio.h>
typedef struct Rec Rec;
struct Rec{
int p,a;
};
int sumA,numF,tmp,idx,ans;
Rec rec[5000];
void swap(Rec &a,Rec &b){
Rec c=a;
a=b;
b=c;
return;
}
int min(int x,int y){
return x>y?y:x;
}
void qSort(Rec *a,int h,int t){
if (h>=t) return;
int x = a[(h+t)>>1].p;
int i=h,j=t;
while (i<=j){
while (a[i].p<x) i++;
while (a[j].p>x) j--;
if (i<=j){
swap(a[i],a[j]);
i++;
j--;
}
}
qSort(a,h,j);
qSort(a,i,t);
return;
}
int main(){
FILE *fin = fopen("milk.in","r");
FILE *fout = fopen ("milk.out","w");
fscanf(fin,"%d %d\n",&sumA,&numF);
for (int i=0;i<numF;i++) fscanf(fin,"%d %d\n",&rec[i].p,&rec[i].a);
qSort(rec,0,numF-1);
//for (int i=0;i<numF;i++) printf("%d %d\n",rec[i].p,rec[i].a);
while (sumA>0){
tmp=min(sumA,rec[idx].a);
ans+=rec[idx].p*tmp;
sumA- =tmp;
idx++;
}
fprintf(fout,"%d\n",ans);
return 0;
}