Cod sursa(job #1295313)

Utilizator EpictetStamatin Cristian Epictet Data 19 decembrie 2014 10:34:45
Problema Shop Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <fstream>
#include <algorithm>
#define LL long long
using namespace std;
ifstream fin ("shop.in");
ofstream fout ("shop.out");
struct art { LL a, b, c; };
LL N, C, L, s, Sol[40];
art V[40];

bool cmp(art x, art y)
{
    return (x.a < y.a);
}

LL Lg_Put(LL nr, LL p)
{
    LL val = 1;
    while (p)
    {
        if (p & 1) val = val * nr;
        nr = nr * nr;
        p = (p >> 1);
    }
    return val;
}

int main()
{
    fin >> N >> C >> L;
    for (int i=1; i<=N; i++)
    {
        fin >> V[i].a >> V[i].b;
        V[i].c = i;
    }
    sort (V + 1, V + 1 + N, cmp);
    LL l = 0, nr = N;
    while (l < L)
    {
        LL x = Lg_Put(C, V[nr].a);
        LL st = 1, dr = V[nr].b, mij;
        while (st <= dr)
        {
            mij = (st + dr) / 2;
            if (l + x * mij <= L) st = mij + 1;
            else dr = mij - 1;
        }
        l += x * dr;
        Sol[V[nr].c] = dr;
        s += dr;
        nr--;
    }
    fout << s << '\n';
    for (LL i=1; i<=N; i++) fout << Sol[i] << ' ';
    fout.close();
    return 0;
}