Pagini recente » Cod sursa (job #449984) | Cod sursa (job #172692) | Cod sursa (job #166044) | Statistici Stan Vladut Angel (vlad008) | Cod sursa (job #2074773)
#include <cstdio>
#include <cmath>
#include <algorithm>
const int MAX_N = 30;
struct Coin {
long long exp;
long long qnt;
long long p;
int poz;
};
Coin a[1 + MAX_N];
bool cmp1(Coin a, Coin b) {
return a.p > b.p;
}
bool cmp2(Coin a, Coin b) {
return a.poz < b.poz;
}
int main() {
freopen("shop.in", "r", stdin);
freopen("shop.out", "w", stdout);
int N;
long long C, L;
scanf("%d%lld%lld", &N, &C, &L);
for (int i = 1; i <= N; i++) {
long long exp, qnt;
scanf("%lld%lld", &exp, &qnt);
a[i] = {exp, qnt, (long long)pow(C, exp), i};
}
std::sort(a + 1, a + N + 1, cmp1);
int k = 1;
long long ans = 0;
while (k <= N && L) {
long long cat = L / a[k].p;
L -= std::min(a[k].qnt, cat) * a[k].p;
a[k].qnt = std::min(a[k].qnt, cat);
ans += a[k].qnt;
k++;
}
printf("%lld\n", ans);
std::sort(a + 1, a + N + 1, cmp2);
for (int i = 1; i < k; i++) {
printf("%lld ", a[i].qnt);
}
for (int i = k; i <= N; i++) {
printf("0 ");
}
printf("\n");
return 0;
}