Cod sursa(job #171512)

Utilizator MirageRobert Sandu Mirage Data 4 aprilie 2008 15:03:15
Problema Shop Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 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;
	obiect v[60];
	freopen("shop.in","r",stdin);
	freopen("shop.out","w",stdout);
	scanf("%d%d%d",&n,&c,&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;
}