Cod sursa(job #1305714)

Utilizator andrei_diaconuAndrei Diaconu andrei_diaconu Data 30 decembrie 2014 01:24:15
Problema Shop Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("shop.in");
ofstream g("shop.out");
int n, c, a;
long long l, nrtip[35], nrm;
struct moneda
{
    int a;
    int b;
    int pozi;
}m[35];
long long powr(int base, int exp) {
    long long res=1;
    while (exp!=0) {
        if (exp%2==1)
            res=res*base;
        base*=base;
        exp/=2;
    }
    return res;
}
bool cmp(const moneda &m1, const moneda &m2)
{
    return m1.a > m2.a;
}
int main()
{
    f>>n>>c>>l;
    for (int i=1; i<=n; i++) {
        f>>m[i].a>>m[i].b;
        m[i].pozi=i;
    }
    sort (m+1, m+n+1, cmp);
    for (int i=1; i<=n; i++) {
        int tmp=l/powr(c, m[i].a);
        nrtip[m[i].pozi]=min(m[i].b, tmp);
        l = l - powr(c, m[i].a) * nrtip[m[i].pozi];
        nrm+=nrtip[m[i].pozi];
    }
    g<<nrm<<"\n";
    for (int i=1; i<=n; i++)
        g<<nrtip[i]<<" ";
    return 0;
}