Cod sursa(job #171516)

Utilizator MirageRobert Sandu Mirage Data 4 aprilie 2008 15:06:11
Problema Shop Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include<stdio.h>
#include<stdlib.h>
long long w[33];
int fol[33];
int comp(const void *a, const void *b){
	int *aa=(int *)a, *bb=(int *)b;
	int x=*aa, y=*bb;
	return x-y;
}
struct obiect{
	int a,b,ind;
};
int main () {
	int i,n,c,max=-1,nr=0;
	long long k=1,l=0;
	obiect v[60];
	freopen("shop.in","r",stdin);
	freopen("shop.out","w",stdout);
	scanf("%d%d",&n,&c);
	scanf("%lld",&l);
	for(i=0;i<n;i++){
		scanf("%d%d",&v[i].a,&v[i].b);
		if(v[i].a>max)
			max=v[i].a;
	}
	for(i=0;i<=max;i++){
		w[i]=k;
		k*=c;
		v[i].ind=i;
	}
	qsort(v,n,sizeof(v[0]),comp);
	for(i=n-1;l>0;i--){
		while(l>=w[v[i].a]&&v[i].b>0){
			++nr;
			--v[i].b;
			++fol[v[i].ind];
			l-=w[v[i].a];
		}
	}
	printf("%d\n",nr);
	for(i=0;i<n;i++)
		printf("%d ",fol[i]);
	return 0;
}