Pagini recente » Cod sursa (job #2811598) | Cod sursa (job #1610903) | Cod sursa (job #536985) | Cod sursa (job #1478394) | Cod sursa (job #1210023)
#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;
}