Cod sursa(job #1454489)

Utilizator bogdan.balanBogdan Balan bogdan.balan Data 26 iunie 2015 18:01:21
Problema Shop Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;

struct date{
    long long ai, bi, poz, nr;
} v[31];

long long k, l, m, n, p, c, i, j, sum;

bool s1(date a, date b){
    return(a.ai>b.ai);
}

bool s2(date a, date b){
    return(a.poz<b.poz);
}

long long put(int x, int y){
    long long a=x, b=y, p=1;
    while(b!=0){
        if(b%2==1){
            p=p*a;
            --b;
        }
        a=(a*a);
        b/=2;
    }
    return p;
}
int main()
{
    freopen("shop.in", "r", stdin);
    freopen("shop.out", "w", stdout);
    scanf("%lld%lld%lld", &n, &p, &l);
    for(i=1; i<=n; ++i){
        scanf("%lld%lld", &v[i].ai, &v[i].bi);
        v[i].poz=i;
    }
    sort(v+1, v+n+1, s1);
    for(i=1; i<=n; ++i){
        long long nr=put(p, v[i].ai), q;
        q=min(v[i].bi, l/nr);
        v[i].nr=q;
        l=l-nr*q;
        sum+=q;
    }
    sort(v+1, v+n+1, s2);
    printf("%lld\n", sum);
    for(i=1; i<=n; ++i)
        printf("%d ", v[i].nr);
return 0;
}