Cod sursa(job #1773952)

Utilizator silkMarin Dragos silk Data 8 octombrie 2016 13:28:37
Problema Shop Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <cstdio>
#include <algorithm>
#define NMax 30
#define ll long long
#define mp make_pair
#define MIN(a,b)((a)<(b)?(a):(b))
using namespace std;

pair<int, int> e[NMax+1];
ll pwr[NMax+1];
ll sol[NMax+1];
int o[NMax+1];


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

    int N,C,i,j,x,y;
    ll L,t,ans=0;

    scanf("%d %d %lld",&N,&C,&L);
    for(i = 1; i <= N; ++i)
    {
        scanf("%d %d",&x,&y);
        e[i] = mp(x,y);
        o[i] = x;
    }

    sort(e+1,e+N+1);
    pwr[0] = 1;
    for(t = C, i = 1; t <= L; ++i, t = t * C ) pwr[i] = t;

    for(i = N; i >= 1; --i)
    {
        t = L / pwr[ e[i].first ];
        t = MIN(t, e[i].second );

        ans = ans + t;
        L = L - t * pwr[ e[i].first ];
        sol[i] = t;
    }

    printf("%lld\n", ans);
    for(i = 1; i <= N; ++i)
    {
        for(j = 1; j <= N; ++j)
        if( o[i] == e[j].first ) printf("%lld ",sol[j]);
    }
    printf("\n");



return 0;
}