Cod sursa(job #41306)

Utilizator webspiderDumitru Bogdan webspider Data 28 martie 2007 09:53:06
Problema Shop Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <stdio.h>
#include <vector>
#include <algorithm>

using namespace std;

long long l;

long long nr[41];
int ind[41];
int ap[41];
int fol[41];

int c;
int i;
int n, nmon;

inline long long pow( int a, int n )
{
	int r = 1;
	for ( int i = 1; i <= n; i++ )
		r *= a;
	return r;
}


int main()
{
	int j,aux;
	freopen("shop.in","r",stdin);
	freopen("shop.out","w",stdout);

	scanf("%d %d %Ld\n", &n, &c, &l);

	for ( i = 1; i <= n; i++ ) {
		scanf("%Ld %d\n", &nr[i], &ap[i] );

		nr[i] = pow( c, nr[i] );
		ind[ i ] = i;
	}
	
	for ( i = 1; i <= n; i++ )
		for ( j = 1; j < n; j++ )
			if ( nr[ ind[j] ] < nr[ ind[j+1] ] )
			{
				aux = ind[j];
				ind[j] = ind[j+1];
				ind[j+1] = aux;
			}
	i = 1;

	while ( l ) {
		++nmon;
		while ( ap[ ind[i] ] == fol[ ind[i] ] || nr[ ind[i] ] > l ) i++;

		l -= nr[ ind[i] ];
		fol[ ind[i] ]++;
	}

	printf("%d\n", nmon );

	for ( i = 1; i <= n; i++ )
		printf("%d ", fol[i] );
	printf("\n");

	fclose(stdin);
	fclose(stdout);

	return 0;
}