Cod sursa(job #1327354)

Utilizator laurageorgescuLaura Georgescu laurageorgescu Data 26 ianuarie 2015 17:26:05
Problema Shop Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.1 kb
#include<fstream>
#include<algorithm>

using namespace std;

ifstream fin( "shop.in" );
ofstream fout( "shop.out" );

const int nmax = 32;
bool a[ nmax + 1 ];
int t[ nmax + 1 ];
int v[ nmax + 1 ];
int k[ nmax + 1 ];
long long p[ nmax + 1 ];

int main() {
    int n, c;
    long long s, ans;
    fin >> n >> c >> s;
    for( int i = 0; i < n; ++ i ) {
        fin >> k[ i ];
        a[ k[ i ] ] = 1;
        fin >> v[ k[ i ] ];
        t[ k[ i ] ] = v[ k[ i ] ];
    }
    p[ 0 ] = 1;
    for( int i = 1; p[ i - 1 ] * c <= s; ++ i ) {
        p[ i ] = p[ i - 1 ] * c;
    }
    ans = 0;
    for( int i = nmax; s > 0 && i >= 0; -- i ) {
        if ( a[ i ] == 1 && p[ i ] > 0 ) {
            if ( v[ i ] * p[ i ] <= s ) {
                s -= v[ i ] * p[ i ];
                v[ i ] = 0;
            } else {
                v[ i ] -= s / p[ i ];
                s %= p[ i ];
            }
            ans += t[ i ] - v[ i ];
        }
    }
    fout << ans << "\n";
    for( int i = 0; i < n; ++ i ) {
        fout << t[ k[ i ] ] - v[ k[ i ] ] << " ";
    }
    fout << "\n";
    fin.close();
    fout.close();
    return 0;
}