Cod sursa(job #44057)

Utilizator andrei.12Andrei Parvu andrei.12 Data 30 martie 2007 20:45:47
Problema Shop Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int n, c, w[35], i, j, nrm, min[35];
long long l, s, wer, p, tot;
struct ches{
	int a, b;
};
ches v[100];
int comp(const void*x, const void*y){
	ches xx=*(ches*)x, yy=*(ches*)y;
	if (xx.a<yy.a) return 1;
	if (xx.a>yy.a) return -1;
	return 0;
}
int main(){
	freopen("shop.in","r",stdin);
	freopen("shop.out","w",stdout);
	scanf("%d%d%lld",&n,&c,&l);
	for (i=0;i<n;i++){
		scanf("%d%d",&v[i].a,&v[i].b);
		w[i]=v[i].a;
	}
	qsort(v,n,sizeof(v[0]),comp);
	s=l;
	i=0;
	while (s>0){
		wer=s/pow(c,v[i].a);
		if (wer<v[i].b) nrm=wer;
		else nrm=v[i].b;
		p=nrm*pow(c,v[i].a);
		if (s-p>=0) { s-=p; min[i]=nrm; tot+=nrm;}
		i++;
	}
	printf("%d\n",tot);
	for (i=0;i<n;i++){
		s=0;
		for (j=0;j<n&&s==0;j++)
			if (w[i]==v[j].a) { printf("%d ",min[j]); s=1;}
	}
	printf("\n");
	return 0;
}