Cod sursa(job #37697)

Utilizator Adriana_SAdriana Sperlea Adriana_S Data 25 martie 2007 12:00:40
Problema Shop Scor 100
Compilator cpp Status done
Runda preONI 2007, Runda 4, Clasa a 9-a si gimnaziu Marime 0.93 kb
#include <stdio.h>
#include <algorithm>

using namespace std;

const int N_MAX = 32;

struct kkt {
	long long p;
	int nr, ind;
} put[N_MAX];
int x, nr[N_MAX], ap[N_MAX], rez[N_MAX];

int cmp(kkt a, kkt b)
{
	return (a.p > b.p);
}

int main()
{
	freopen("shop.in", "r", stdin);
#ifndef _KKT_
	freopen("shop.out", "w", stdout);
#endif

	int N, C, i, j;
	long long L;
	
	scanf("%d %d %lld\n", &N, &C, &L);
	for (i = 1; i <= N; i ++) {
		scanf("%d %d\n", &x, &put[i].nr);
		put[i].ind = i;
		put[i].p = 1;
		for (j = 1; j <= x; j ++) {
			put[i].p *= C;
		}
	}

	sort(put + 1, put + N + 1, cmp);
	
	int nrm = 0;
    long long s = 0;
//	printf("%lld\n", L);

	for (i = 1; i <= N; i ++) {
//		printf("%d %lld\n", s, L);
		while (s + put[i].p <= L && ap[i] < put[i].nr) {
			s += put[i].p;
			nrm ++;
			ap[i] ++;
		}
		rez[put[i].ind] = ap[i];
	}

	printf("%d\n", nrm);
	for (i = 1; i <= N; i ++) {
		printf("%d ", rez[i]);
	}
	printf("\n");
	
	return 0;
}