Pagini recente » Cod sursa (job #941628) | Cod sursa (job #1911940) | Monitorul de evaluare | Cod sursa (job #1010472) | Cod sursa (job #484037)
Cod sursa(job #484037)
# include <cstdio>
# include <algorithm>
using namespace std ;
const char FIN[] = "shop.in", FOU[] = "shop.out" ;
const int MAX = 35 ;
# define x first
# define y second
# define mp make_pair
pair < pair < long long, int > , int > coin[MAX] ;
int sol[MAX] ;
int N, C, rez ;
long long L, P ;
int main ( void ) {
freopen ( FIN, "r", stdin ) ;
freopen ( FOU, "w", stdout ) ;
scanf ( "%d %d %lld", &N, &C, &L ) ;
for ( int i = 1, A, B; i <= N; ++i ) {
scanf ( "%d %d", &A, &B ) ;
for ( P = 1; A ; --A ) {
P *= C ;
}
coin[i] = mp ( mp ( P, B ), i ) ;
}
sort ( coin + 1, coin + N + 1 ) ;
for ( int i = N; i ; --i ) {
int cnt = min ( L / coin[i].x.x, ( long long ) coin[i].x.y ) ;
L -= cnt * coin[i].x.x ;
sol[ coin[ i ].y ] = cnt;
rez += cnt;
}
printf ( "%d\n", rez ) ;
for ( int i = 1; i <= N; ++i ) {
printf ( "%d ", sol[ i ] ) ;
}
return 0 ;
}