Cod sursa(job #2495989)

Utilizator Alexandru_StoianStoian Sorin Alexandru Alexandru_Stoian Data 20 noiembrie 2019 08:45:16
Problema Shop Scor 90
Compilator cpp-64 Status done
Runda ad_hoc Marime 1.11 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,i;
}a[30];

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

bool cmp2(bani a, bani b){
    return a.i<b.i;
}

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;
        a[i].i=i;
    }

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

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

    int i=1;

    for(int i=1; i<=n; ++i){
        val=log_exp(c,a[i].x);
        p=l/val;
        if(p<a[i].c){
            l=l-p*val;
            a[i].c=p;
        }
        else l=l-a[i].c*val;
        k=k+a[i].c;
    }

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

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