Cod sursa(job #1210023)

Utilizator IulianBoboUAIC Boboc Iulian IulianBobo Data 19 iulie 2014 01:04:16
Problema Shop Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
typedef struct { int val, nr; } Coins;
long long sum[33];
int folosite[33],pozitie[33];
bool compare(Coins a, Coins b)
{
	return (a.val > b.val);
}
int main()
{
	long long l;
	int n, c, i, x, ok, j, add, total=0;
	ifstream f("shop.in");
	ofstream g("shop.out");
	Coins v[31];
	f >> n >> c >> l;
	for (i = 1; i <= n; ++i)
	{
		f >> x;
		f >>v[i].nr;
		v[i].val = x;
		sum[x] = (long long)pow(c, x);
		pozitie[i] = x;
	}
	sort(v + 1, v + n + 1, compare);
	i = 1;
	while (l != 0)
	{
		ok = 1;
		add = 0;
		if (l - sum[v[i].val] * v[i].nr >= 0)
		{
			l = l - sum[v[i].val] * v[i].nr;
			folosite[v[i].val] = v[i].nr;
			total += v[i].nr;
		}
		else
		{
			for (j = 1; j <= v[i].nr && ok; ++j)
			{
				if (l - sum[v[i].val] >= 0)
				{
					l = l - sum[v[i].val];
					++add;
				}
				else ok = 0;
			}
			folosite[v[i].val] = add;
			total += add;
		}
		++i;
	}
	g << total << "\n";
	for (i = 1; i <= n; i++) g << folosite[pozitie[i]] << " ";
	f.close();
	g.close();
	return 0;
}