Cod sursa(job #774871)

Utilizator Mihai22eMihai Ionut Enache Mihai22e Data 6 august 2012 16:34:53
Problema Shop Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include<stdio.h>
#include<algorithm>

using namespace std;

#define MAXN 32

typedef struct{ long long int val; int nr, u, pos; } coin;

coin v[ MAXN ];
int n, i, p, u[ MAXN ], C, j;

long long int L, x, s, res;

inline int cmp1(coin x, coin y)
{
	if(x.val < y.val)
		return 1;
	return 0;
}

inline int cmp2(coin x, coin y)
{
	if(x. pos < y.pos)
		return 1;
	return 0;
}

int main()
{
	FILE *f = fopen("shop.in", "r");
	
	fscanf(f, "%d %d %lld", &n, &C, &L);
	
	for(i = 0; i < n; ++i)
	{
		fscanf(f, "%d %d", &p, &v[i].nr);
		x = 1;
		for(j = 0; j < p; ++j)
			x *= C;
		v[i].val = x, v[i].pos = i;
	}
	
	fclose(f);
	
	sort(v, v + n, cmp1);
	
	i = n - 1;
	
	while(L && i >= 0)
	{
		s = 0;
		while(s + v[i].val <= L && v[i].nr)
			s += v[i].val, --v[i].nr, ++v[i].u, ++res;
		L -= s, --i;
	}
	
	sort(v, v + n, cmp2);
	
	FILE *g = fopen("shop.out", "w");
	
	fprintf(g, "%lld\n", res);
	
	for(i = 0; i < n; ++i)
		fprintf(g, "%d ", v[i].u);
		
	fprintf(g, "\n");
	
	fclose(g);
	
	return 0;
}