Cod sursa(job #38025)

Utilizator bogdan2412Bogdan-Cristian Tataroiu bogdan2412 Data 25 martie 2007 14:28:15
Problema Shop Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <cstdio>
#include <algorithm>

using namespace std;

#define LLU unsigned long long
#define MAXN 32

int N, C;
LLU L;

LLU A[MAXN]; int B[MAXN], o[MAXN];
int nr[MAXN];

int cmp( int a, int b ) { return A[a] > A[b]; }

int main()
{
	freopen("shop.in", "rt", stdin);
	freopen("shop.out", "wt", stdout);

	scanf("%d %d %llu", &N, &C, &L);

	for (int i = 0; i < N; i++)
	{
		int put;
		scanf("%d %d", &put, B + i);

		A[i] = 1;
		for (int k = 0; k < put; k++)
			A[i] *= C;
		o[i] = i;
	}
	sort( o, o + N, cmp );

	int NR = 0;
	for (int i = 0; i < N && L; i++)
	{
		LLU Nr = L / A[ o[i] ];
		if (Nr > (LLU)B[ o[i] ])
			Nr = (LLU)B[ o[i] ];

		L -= Nr * A[ o[i] ];
		NR += Nr;
		nr[ o[i] ] += Nr;
	}

	if (L)
	{
		printf("-1\n");
		return 0;
	}

	printf("%d\n", NR);
	for (int i = 0; i < N; i++)
		printf("%d ", nr[i]);
	printf("\n");

	return 0;
}