Cod sursa(job #37470)

Utilizator bogdan2412Bogdan-Cristian Tataroiu bogdan2412 Data 25 martie 2007 10:13:35
Problema Shop Scor 100
Compilator cpp Status done
Runda preONI 2007, Runda 4, Clasa a 9-a si gimnaziu Marime 0.79 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++)
		for (; A[ o[i] ] <= L && nr[ o[i] ] < B[ o[i] ]; )
			L -= A[ o[i] ],
			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;
}