Pagini recente » Cod sursa (job #1777453) | Cod sursa (job #533058) | Cod sursa (job #2016823) | Cod sursa (job #1770883) | Cod sursa (job #38262)
Cod sursa(job #38262)
#include <stdio.h>
#include <algorithm>
using namespace std;
const int N_MAX = 32;
struct kkt {
long long p;
int nr, ind;
} put[N_MAX];
int x, nr[N_MAX], ap[N_MAX], rez[N_MAX];
int cmp(kkt a, kkt b)
{
return (a.p > b.p);
}
int main()
{
freopen("shop.in", "r", stdin);
#ifndef _KKT_
freopen("shop.out", "w", stdout);
#endif
int N, C, i, j;
long long L;
scanf("%d %d %lld\n", &N, &C, &L);
for (i = 1; i <= N; i ++) {
scanf("%d %d\n", &x, &put[i].nr);
put[i].ind = i;
put[i].p = 1;
for (j = 1; j <= x; j ++) {
put[i].p *= C;
}
}
sort(put + 1, put + N + 1, cmp);
int nrm = 0;
long long s = 0;
// printf("%lld\n", L);
for (i = 1; i <= N; i ++) {
// printf("%d %lld\n", s, L);
while (s + put[i].p <= L && ap[i] < put[i].nr) {
s += put[i].p;
nrm ++;
ap[i] ++;
}
rez[put[i].ind] = ap[i];
}
printf("%d\n", nrm);
for (i = 1; i <= N; i ++) {
printf("%d ", rez[i]);
}
printf("\n");
return 0;
}