1. 程式人生 > >USACO 1.4.1_milk

USACO 1.4.1_milk

/*
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; }