Cod sursa(job #997469)

Utilizator DorelBarbuBarbu Dorel DorelBarbu Data 14 septembrie 2013 10:43:39
Problema Shop Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.11 kb
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#define MAX_N 31
using namespace std;

int N, C, L , solution[MAX_N] ;

struct moneda
{
    int A ;

    int B ;

    int tip ;
} ;

moneda v[MAX_N] ;

bool comp( moneda x , moneda y )
{
    return (x.A > y.A) ;
}

void citire()
{
    freopen("shop.in","r",stdin);

    scanf("%d %d %d", &N , &C , &L) ;

    int i ;

    for( i = 1 ; i <= N ; i++ )
    {
        scanf("%d %d", &v[i].A , &v[i].B ) ;

        v[i].tip = i ;
    }
}

int nr_monezi = 0 ;

void solve()
{
    int i, used , aux ;

    for( i = 1 ; i <= N ; i++ )
    {
        aux = L / pow(C,v[i].A) ;

        used = min( v[i].B , aux ) ;

        nr_monezi += used ;

        L -= used * pow(C,v[i].A) ;

        solution[v[i].tip] = used ;
    }
}

int main()
{
    freopen("shop.out" , "w", stdout) ;

    citire() ;

    sort( v+1 , v+N+1 , comp ) ;

    solve() ;

    printf("%d\n", nr_monezi) ;

    for( int i = 1 ; i <= N ; i++ )
    {
        printf("%d ", solution[i]) ;
    }

    return 0 ;


}