Cod sursa(job #962701)

Utilizator mihaipopa12Popa Mihai mihaipopa12 Data 15 iunie 2013 15:56:25
Problema Shop Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include<stdio.h>

#define maxpow 35

FILE*f=fopen("shop.in","r");
FILE*g=fopen("shop.out","w");

int n,c;
int m[maxpow],sol[maxpow],tip[maxpow];
long long L;

inline long long lgpow ( int a , int b ){
	long long s = 1,p = a;
	
	while ( b ){
		if ( b & 1 ){
			s = s*p;
		}
		p = p*p;
		b >>= 1;
	}
	return s;
}

int main () {
	
	fscanf(f,"%d %d %lld",&n,&c,&L);
	int a,b;
	for ( int i = 1 ; i <= n ; ++i ){
		fscanf(f,"%d %d",&a,&b);
		m[a] += b;
		tip[i] = a;
	}
	
	int total = 0;
	for ( int i = maxpow-1 ; i >= 0 ; --i ){
		if ( !m[i] )	continue ;
		long long value = lgpow(c,i);
		
		for ( int j = 1 ; j <= m[i] ; ++j ){
			if ( L >= value ){
				L -= value;
				++sol[i]; ++total;
			}
			else{
				break ;
			}
		}
	}
	
	fprintf(g,"%d\n",total);
	for ( int i = 1 ; i <= n ; ++i ){
		fprintf(g,"%d ",sol[tip[i]]);
	}
	fprintf(g,"\n");
	
	fclose(f);
	fclose(g);
	
	return 0;
}