Pagini recente » Cod sursa (job #2227303) | Cod sursa (job #3150917) | Cod sursa (job #750440) | Cod sursa (job #3189128) | Cod sursa (job #1295313)
#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;
}