Cod sursa(job #52853)

Utilizator MirageRobert Sandu Mirage Data 20 aprilie 2007 09:55:42
Problema Shop Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include<stdio.h>
int fol[30];
int main () {
	int l;
	int n,c,i,a[30],b[30],max=-1,nr=0,q=-1,k=1,p[30],f;
	FILE *in=fopen("shop.in","r"), *out=fopen("shop.out","w");
	fscanf(in,"%d%d",&n,&c);
	fscanf(in,"%d",&l);
	for(i=0;i<n;i++){
		fscanf(in,"%d%d",&a[i],&b[i]);
		if(max<a[i])
			max=a[i];
	}
	for(i=0;i<=max;i++){
		p[i]=k;
		k*=c;
	}
	while(l){
		q=-1;
		max=-1;
		k=1;
		for(i=0;i<n;i++)
			if(a[i]>q){
				max=i;
				q=a[i];
			}
		a[max]=-1;
		f=l/p[q];
		if(f<b[max]){
			l=l-(f*p[q]);
			fol[max]=f;
			nr+=f;
		}
		else{
			l=l-(b[max]*p[q]);
			fol[max]=b[max];
			nr+=b[max];
		}
	}
	fprintf(out,"%d\n",nr);
	for(i=0;i<n;i++)
		fprintf(out,"%d ",fol[i]);
	fprintf(out,"\n");
	fclose(in);
	fclose(out);
	return 0;
}