Cod sursa(job #1425273)

Utilizator BLz0rDospra Cristian BLz0r Data 27 aprilie 2015 10:27:48
Problema Shop Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.11 kb
#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;
}