Cod sursa(job #349464)

Utilizator GheorgheMihaiMihai Gheorghe GheorgheMihai Data 19 septembrie 2009 17:26:24
Problema Shop Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include<stdio.h>
#include<algorithm>
using namespace std;
struct vect
{
	long long x;
	int nr;
};
int n,x,rez;
long long suma;
vect v[40];
int sol[40];
int ind[40];

int comp(int i, int j)
{
	if(v[i].x>v[j].x)
		return 1;
	return 0;
}

int main()
{
	freopen("shop.in","r",stdin);
	freopen("shop.out","w",stdout);
	scanf("%d%d%lld",&n,&x,&suma);
	int i,nr,j;
	for(i=1;i<=n;i++)
	{
		ind[i]=i;
		v[i].x=1;
		scanf("%d%d",&nr,&v[i].nr);
		for(j=1;j<=nr && v[i].x<=suma;j++)
			v[i].x*=x;
	}
	sort(ind+1,ind+n+1,comp);
	for(i=1;i<=n;i++)
	{
		sol[ind[i]]=suma/v[ind[i]].x;
		suma=suma-sol[ind[i]]*v[ind[i]].x;
		if(sol[ind[i]]>v[ind[i]].nr)
		{
			suma=suma+v[ind[i]].x*(sol[ind[i]]-v[ind[i]].nr);
			sol[ind[i]]=v[ind[i]].nr;
		}
		rez=rez+sol[ind[i]];
	}
	printf("%d\n",rez);
	for(i=1;i<=n;i++)
		printf("%d ",sol[i]);
	return 0;
}