Cod sursa(job #1305709)

Utilizator andrei_diaconuAndrei Diaconu andrei_diaconu Data 30 decembrie 2014 01:14:20
Problema Shop Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("shop.in");
ofstream g("shop.out");
int n, c, a, nrtip[35], nrm;
long long l;
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++) {
        nrtip[i]=min((long long)m[i].b, l/powr(c, m[i].a));
        l -= powr(c, m[i].a)*nrtip[i];
        nrm+=nrtip[i];
    }
    g<<nrm<<"\n";
    for (int i=1; i<=n; i++)
        g<<nrtip[m[i].pozi]<<" ";
    return 0;
}