Cod sursa(job #2495971)

Utilizator Alexandru_StoianStoian Sorin Alexandru Alexandru_Stoian Data 20 noiembrie 2019 08:23:49
Problema Shop Scor 50
Compilator cpp-64 Status done
Runda ad_hoc Marime 0.99 kb
#include <bits/stdc++.h>

using namespace std;

ifstream f("shop.in");
ofstream g("shop.out");

int n,m,c,k,v[1001],p,aux[1001];

long long l,val;

struct bani{
    int x,c;
}a[30];

bool cmp(bani a, bani b){
    return a.x>b.x;
}

long long log_exp(int x, int n){
    if(n==0)return 1;
    else{
        long long p=x;
        long long sol=1;
        for(int i=0; (1<<i)<=n; ++i){
            if( ((1<<i) & n) > 0)
                sol=sol*p;
            p=p*p;
        }
        return sol;
    }
}

int main(){
    f>>n>>c>>l;

    for(int i=1; i<=n; ++i){
        f>>a[i].x>>a[i].c;
        aux[i]=a[i].x;
    }

    sort(a+1, a+n+1, cmp);

    val=log_exp(c,a[1].x);

    int i=1;

    while(l/val>0){
        p=l/val;
        p=min(p,a[i].c);
        l=l-p*val;
        v[a[i].x]=p;
        k=k+p;
        ++i;
        val=log_exp(c,a[i].x);
    }

    g<<k<<'\n';
    for(int i=1; i<=n; ++i){
        g<<v[aux[i]]<<' ';
    }
    return 0;
}