Cod sursa(job #493390)

Utilizator dushmiMihai-Alexandru Dusmanu dushmi Data 17 octombrie 2010 23:17:37
Problema Shop Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
#include<cstdio>
#include<algorithm>
using namespace std;
struct ban
{
    long long poz,val,nr;
};
ban a[1<<5];
long long n,l,f[1<<5];
bool comp(const ban &X,const ban &Y)
{
    return X.val>Y.val;
}
long long putere(long long c,long long x)
{
    long long p=1;
    for(int i=1;i<=x;i++)
        p*=c;
    return p;
}
void read()
{
    freopen("shop.in","r",stdin);
    freopen("shop.out","w",stdout);
    long long c,x;
    scanf("%lld%lld%lld",&n,&c,&l);
    for(int i=1;i<=n;i++)
    {
        scanf("%lld%lld",&x,&a[i].nr);
        a[i].val=putere(c,x);
        a[i].poz=i;
    }
}
void init()
{
    sort(a+1,a+n+1,comp);
}
long long minim(long long x,long long y)
{
    return x<y?x:y;
}
void solve()
{
    long long tot=0;
    for(int i=1;i<=n;i++)
    {
        f[a[i].poz]=minim(l/a[i].val,a[i].nr);
        l-=(a[i].val*f[a[i].poz]);
        tot+=f[a[i].poz];
    }
    printf("%lld\n",tot);
    for(int i=1;i<=n;i++)
        printf("%lld ",f[i]);
}
int main()
{
    read();
    init();
    solve();
    return 0;
}