Cod sursa(job #2495945)

Utilizator Vlad3108Tir Vlad Ioan Vlad3108 Data 20 noiembrie 2019 00:09:58
Problema Shop Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <bits/stdc++.h>
using namespace std;
struct Coin{
    int ind,val,ct;
    bool operator <(const Coin &other) const{
        return val>other.val;
    }
}C[33];
bool resort(const Coin &A,const Coin &B){
    return A.ind<B.ind;
}
long long powInt(int a,int b){
    long long ans=1;
    while(b--)
        ans*=a;
    return ans;
}
int main(){
    freopen("shop.in","r",stdin);
    freopen("shop.out","w",stdout);
    int n,c;
    long long l;
    scanf("%d %d %lld",&n,&c,&l);
    for(int i=1;i<=n;++i){
        C[i].ind=i;
        scanf("%d %d",&C[i].val,&C[i].ct);
    }
    sort(C+1,C+n+1);
    int i=1;
    long long nr=0;
    for(int i=1;i<=n;++i){
        long long ct=l/powInt(c,C[i].val);
        if(ct>C[i].ct)
            l-=powInt(c,C[i].val)*C[i].ct;
        else{
            l-=powInt(c,C[i].val)*ct;
            C[i].ct=ct;
        }
        nr+=C[i].ct;
        ++i;
    }
    sort(C+1,C+n+1,resort);
    printf("%lld\n",nr);
    for(int i=1;i<=n;++i)
        printf("%d ",C[i].ct);
    return 0;
}