Pagini recente » Cod sursa (job #2101637) | Cod sursa (job #334161) | Cod sursa (job #1037162) | Cod sursa (job #2466524) | Cod sursa (job #251112)
Cod sursa(job #251112)
#include <cstdio>
#include <algorithm>
using namespace std;
#define MAX_N 35
int A[MAX_N], B[MAX_N], I[MAX_N], Sol[MAX_N];
int N, C;
long long L;
struct cmp
{
bool operator() (const int a, const int b) const
{
return A[a] > A[b];
}
};
long long pow(int a, int p)
{
long long rez = 1;
long long aux = a;
while(p)
{
if(p & 1)
rez *= aux;
p >>= 1;
aux *= aux;
}
return rez;
}
void citire()
{
scanf("%d %d %lld",&N, &C, &L);
for(int i = 1; i <= N; ++i)
{
scanf("%d %d",A+i, B+i);
I[i] = i;
}
}
void solve()
{
sort(I+1, I+N+1, cmp());
for(int i = 1; i <= N; ++i)
{
long long act = pow(C, A[I[i]]);
long long j = L/act;
int nr = min((int)j, B[I[i]]);
Sol[I[i]] = nr;
L -= act*nr;
if(L == 0)
break;
}
int rez = 0;
for(int i = 1; i <= N; ++i)
rez += Sol[i];
printf("%d\n",rez);
for(int i = 1; i <= N; ++i)
printf("%d ",Sol[i]);
}
int main()
{
freopen("shop.in","rt",stdin);
freopen("shop.out","wt",stdout);
citire();
solve();
}