Cod sursa(job #268056)

Utilizator ssergiussSergiu-Ioan Ungur ssergiuss Data 28 februarie 2009 18:17:12
Problema Shop Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include<algorithm>
using namespace std;
short n,c;
long long l;
struct mon{
	short p,tip,uz;
	int f;};
mon a[31];
long long pow(short x,short p){
	int i;
	long long nr;
	for(i=nr=1; i<=p; nr*=x,++i);
	return nr;}
int cmp(mon a,mon b){
	return a.p<b.p;}
void solve(){
	short i,j;
	int k;
	long long x,sum;
	scanf("%hd%hd%lld",&n,&c,&l);
	for(i=1; i<=n; a[i].tip=i++)
		scanf("%hd%d",&a[i].p,&a[i].f);
	sort(a+1,a+n+1,cmp);
	for(i=n,k=0,sum=l; sum; ){
		if(!a[i].f)
			--i;
		else{
			for(x=pow(c,a[i].p); sum-x>=0&&a[i].f; sum-=x,++a[i].uz,--a[i].f,++k); 
			--i;}}
    for(printf("%d\n",k),i=1; i<=n; ++i)
        for(j=1; j<=n; ++j)
			if(a[j].tip==i){
				printf("%hd ",a[j].uz);
				j=n+1;}}
int main(){
    freopen("shop.in","r",stdin);
    freopen("shop.out","w",stdout);
    solve();
    return 0;}