Cod sursa(job #46773)

Utilizator slayer4uVictor Popescu slayer4u Data 2 aprilie 2007 22:31:28
Problema Shop Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include<stdio.h>
#include<math.h>
long long t[1001],x[1001],y[1001],w[1001],i,j,n,m,k,l,s,a,z;
long long putere(long long p)
{
	long long put=1;
	for (long long i=1;i<=p;i++)
		put*=k;
	return put;
}
int main()
{
	freopen("shop.in","r",stdin);
	freopen("shop.out","w",stdout);
	scanf("%lld%lld%lld",&n,&k,&m);
	for (i=1;i<=n;i++)
	{
	scanf("%lld%lld",&x[i],&y[i]);
	t[i]=i;
	}
	a=1;
	while (a)
	{
		a=0;
		for (i=1;i<n;i++)
			if (x[i]<x[i+1]) {a=x[i]; x[i]=x[i+1]; x[i+1]=a; a=y[i]; y[i]=y[i+1]; y[i+1]=a; a=t[i]; t[i]=t[i+1]; t[i+1]=a;a=1;}
	}
	for (i=1;i<=n&&m;i++)
	{
	z=0;
	while (m>=putere(x[i])&&y[i]>0) {m-=putere(x[i]);z++;y[i]--;}
	s+=z;
	w[t[i]]=z;
	}
	printf("%lld\n",s);
	for (i=1;i<=n;i++)
	printf("%lld ",w[i]);
	printf("\n");
	return 0;
}