Cod sursa(job #1368652)

Utilizator span7aRazvan span7a Data 2 martie 2015 19:07:44
Problema Shop Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.16 kb
#include<fstream>
#include<algorithm>
using namespace std;
ifstream f("shop.in");
ofstream g("shop.out");
struct portofel{
int tip,val,nr;
};
uint64_t n,b,s,nr_total_monezi;
portofel v[31];
int sol[31];
bool cmp(portofel a,portofel b)
{
    return a.val>b.val;
}
uint64_t put(uint64_t a,uint64_t k)
{
    uint64_t aux=a,sol=1;

    if(k)
    {
        while(k)
        {
            if(k%2) sol*=aux;
            aux*=aux;
            k/=2;
        }
    return sol;

    }
    else
        return 1;

}
void solve()
{
    uint64_t valoare;
    int nr_monezi,tipul;
    int i=1;
    while(s)
    {
       valoare = put(b,v[i].val);
       nr_monezi=   s/valoare;
       tipul=v[i].tip;
       sol[tipul]=min(nr_monezi,v[i].nr);
       s-=sol[tipul]*valoare;
       nr_total_monezi+=sol[tipul];
       i++;

    }

}

void afisare()
{
    g<<nr_total_monezi<<'\n';
    int i;
    for(i=1;i<=n;i++)
        g<<sol[i]<<" ";
}
int main()
{
    f>>n>>b>>s;
    for(int i=1;i<=n;i++)
    {
        f>>v[i].val>>v[i].nr;
        v[i].tip=i;
    }
    sort(v+1,v+n+1,cmp);

    solve();

    afisare();
    return 0;
}