Cod sursa(job #46777)

Utilizator za_wolfpalianos cristian za_wolf Data 2 aprilie 2007 22:32:09
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  ppow(long long k,long long p)
{
long long i,l;
l=1;
for (i=1;i<=p;i++)
l=l*k;
return l;
}
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;}
	}
	s=0;
	for (i=1;i<=n;i++)
	{
	z=0;
	while (m>=ppow(k,x[i])&&y[i]>0) {m-=ppow(k,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;
}