Pagini recente » Cod sursa (job #2042556) | Cod sursa (job #1176548) | Cod sursa (job #2793984) | Cod sursa (job #2824856) | Cod sursa (job #690168)
Cod sursa(job #690168)
#include <cstdio>
#include <cstdlib>
#include <ctime>
#include <cstring>
#include <algorithm>
#include <vector>
#include <set>
#include <map>
using namespace std;
#define Nmax 32
int A[Nmax], B[Nmax], N, C, i, j, ind[Nmax];
long long L, X, k, tot;
inline int max(int a, int b) { return a>b?a:b; }
inline int min(int a, int b) { return a<b?a:b; }
inline int modul(int a) { return a>0?a:-a; }
int cmp(const int &a, const int &b)
{
return A[a] > A[b];
}
int main()
{
freopen("shop.in","r",stdin);
freopen("shop.out","w",stdout);
scanf("%d %d %lld",&N, &C, &L);
for (i=0; i<N; ++i)
{
scanf("%d %d", &A[i], &B[i]);
ind[i] = i;
}
sort(ind, ind+N, cmp);
for (i=0; i<N; ++i)
{
X = 1;
for (j=1; j<=A[ind[i]] && X<=L; ++j)
X *= C;
k = L / X;
if (k > B[ind[i]]) k = B[ind[i]];
L -= X*k;
tot += k;
B[ind[i]] = k;
}
printf("%lld\n", tot);
for (i=0; i<N; ++i)
printf("%d ", B[i]);
return 0;
}