Cod sursa(job #484037)

Utilizator SpiderManSimoiu Robert SpiderMan Data 11 septembrie 2010 17:29:27
Problema Shop Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
# 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 ;
}