Pagini recente » Cod sursa (job #1896365) | Cod sursa (job #2431216) | Cod sursa (job #2745478) | Cod sursa (job #805641) | Cod sursa (job #2242199)
#include <algorithm>
#include <cmath>
#include <cstdio>
struct Pow {
long long nr;
int times;
int ord;
bool operator < (const Pow &other) const {
return this->nr > other.nr;
}
};
int main() {
freopen("shop.in", "r", stdin);
freopen("shop.out", "w", stdout);
int n, c;
long long l;
scanf("%d%d%lld", &n, &c, &l);
Pow powers[2 + n];
for (int i = 1; i <= n; i++) {
int a, b;
scanf("%d%d", &a, &b);
long long a1 = (long long)std::pow(c, a);
powers[i].nr = a1;
powers[i].times = b;
powers[i].ord = i;
}
std::sort(powers + 1, powers + n + 1);
int sol[2 + n], sum = 0;
for (int i = 1; i <= n; i++) {
sol[powers[i].ord] = l / powers[i].nr;
sol[powers[i].ord] = std::min(sol[powers[i].ord], powers[i].times);
l -= sol[powers[i].ord] * powers[i].nr;
sum += sol[powers[i].ord];
}
printf("%d\n", sum);
for (int i = 1; i <= n; i++)
printf("%d ", sol[i]);
return 0;
}