Pagini recente » Cod sursa (job #2615708) | Cod sursa (job #1086144) | Cod sursa (job #2957833) | Cod sursa (job #1835105) | Cod sursa (job #2766963)
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream f("shop.in");
ofstream g("shop.out");
class moneda
{
public:
int nr, index;
long long val;
moneda()
{
val = nr = index = 0;
}
moneda(long long _VAL, int _NR, int _INDEX)
{
val = _VAL;
nr = _NR;
index = _INDEX;
}
};
bool cmp(moneda &a, moneda &b)
{
return a.val > b.val;
}
long long ridLog(long long n, int p)
{
long long ans = 1;
while (p)
{
if (p % 2)
ans = ans * n;
n = n * n;
p /= 2;
}
return ans;
}
int n;
long long c, l;
vector < moneda > m;
int ans[31];
int main()
{
f >> n >> c >> l;
for (int i = 1; i <= n; i++)
{
int a, b;
f >> a >> b;
m.push_back(moneda(ridLog(c, a), b, i));
}
sort(m.begin(), m.end(), cmp);
int nr = 0;
for (auto it : m)
if (l >= it.val)
{
long long aux = min(1LL * it.nr, l / it.val);
ans[it.index] = aux;
nr += aux;
l -= aux * it.val;
}
g << nr << "\n";
for (int i = 1; i <= n; i++)
g << ans[i] << " ";
return 0;
}