Pagini recente » Cod sursa (job #178422) | Cod sursa (job #2852097) | Cod sursa (job #1603099) | Cod sursa (job #1611420) | Cod sursa (job #38025)
Cod sursa(job #38025)
#include <cstdio>
#include <algorithm>
using namespace std;
#define LLU unsigned long long
#define MAXN 32
int N, C;
LLU L;
LLU A[MAXN]; int B[MAXN], o[MAXN];
int nr[MAXN];
int cmp( int a, int b ) { return A[a] > A[b]; }
int main()
{
freopen("shop.in", "rt", stdin);
freopen("shop.out", "wt", stdout);
scanf("%d %d %llu", &N, &C, &L);
for (int i = 0; i < N; i++)
{
int put;
scanf("%d %d", &put, B + i);
A[i] = 1;
for (int k = 0; k < put; k++)
A[i] *= C;
o[i] = i;
}
sort( o, o + N, cmp );
int NR = 0;
for (int i = 0; i < N && L; i++)
{
LLU Nr = L / A[ o[i] ];
if (Nr > (LLU)B[ o[i] ])
Nr = (LLU)B[ o[i] ];
L -= Nr * A[ o[i] ];
NR += Nr;
nr[ o[i] ] += Nr;
}
if (L)
{
printf("-1\n");
return 0;
}
printf("%d\n", NR);
for (int i = 0; i < N; i++)
printf("%d ", nr[i]);
printf("\n");
return 0;
}