Cod sursa(job #41276)

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

using namespace std;

long long l;

long long nr[31];
int ap[31];
int fol[31];

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;
}

inline int maxm()
{
	int aux = 0;
	for ( int i = 1; i <= n; i++ )
		if ( nr[i] > nr[aux] && ( ap[i] - fol[i] ) && nr[i] <= l )
			aux = i;
	return aux;
}

int main()
{
	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] );
	}

	while ( l ) {
		nmon++;
		i = maxm();

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

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

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

	fclose(stdin);
	fclose(stdout);

	return 0;
}