Pagini recente » Cod sursa (job #687163) | Borderou de evaluare (job #1761623) | Cod sursa (job #3194608) | Cod sursa (job #2877534) | Cod sursa (job #1425273)
#include <cstdio>
#include <algorithm>
using namespace std;
#define Nmax 35
FILE *f = fopen ( "shop.in", "r" );
FILE *g = fopen ( "shop.out", "w" );
int frecv[Nmax], sol[Nmax], ind[Nmax];
long long val[Nmax];
long long Power ( int a, int x ){
long long p = 1, aa = a;
while ( x ){
if ( x & 1 ){
p *= aa;
x--;
}
aa *= aa;
x >>= 1;
}
return p;
}
int main(){
int N, C, A, B, go = -1, coins = 0;
long long L;
fscanf ( f, "%d%d%lld", &N, &C, &L );
for ( int i = 1; i <= N; ++i ){
fscanf ( f, "%d%d", &A, &B );
frecv[A] = B;
ind[i] = A;
val[A] = Power ( C, A );
go = max ( go, A );
}
for ( int i = go; i >= 0; --i ){
if ( frecv[i] != 0 ){
int nrc = min ( 1LL * frecv[i], L / val[i] );
coins += nrc;
sol[i] = nrc;
L -= 1LL * nrc * val[i];
}
}
fprintf ( g, "%d\n", coins );
for ( int i = 1; i <= N; ++i )
fprintf ( g, "%d ", sol[ind[i]] );
return 0;
}