Cod sursa(job #1327343)

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

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 ];

int main() {
    int n, c;
    long long s, p, 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 = 1;
    for( int i = 0; i < nmax; ++ i ) {
        p *= c;
    }
    ans = 0;
    for( int i = nmax; s > 0 && i >= 0; -- i, p /= c ) {
        if ( a[ i ] == 1 ) {
            if ( v[ i ] * p <= s ) {
                s -= v[ i ] * p;
                v[ i ] = 0;
            } else {
                v[ i ] -= s / p;
                s %= p;
            }
            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;
}