Pagini recente » Cod sursa (job #2920346) | Cod sursa (job #228913) | Cod sursa (job #1857933) | Cod sursa (job #2168798) | Cod sursa (job #3282953)
#include <bits/stdc++.h>
using namespace std;
ifstream fcin("shop.in");
ofstream fcout("shop.out");
typedef long long ll;
const int N = 1000;
int v[N], r[N];
struct elem
{
ll a;
int cnt, poz, r;
} a[N];
int n, c;
ll l;
bool comp1(elem a, elem b)
{
return a.a < b.a;
}
bool comp2(elem a, elem b)
{
return a.poz < b.poz;
}
ll mypow(int b, int e)
{
ll rasp = 1;
for (int i = 1; i <= e; i++)
rasp *= b;
return rasp;
}
int main()
{
fcin >> n >> c >> l;
for (int i = 1; i <= n; i++)
{
fcin >> a[i].a >> a[i].cnt;
a[i].poz = i;
a[i].a = mypow(c, a[i].a);
}
sort(a + 1, a + n + 1, comp1);
ll sum = 0;
for (int i = n; i >= 1; i--)
{
/// putem sa le luam pe toate?
ll x;
if (!__builtin_smulll_overflow(a[i].a, a[i].cnt, &x) && x <= l)
{
l -= x;
a[i].r = a[i].cnt;
}
else /// nu putem sa le luam pe toate
{
x = l / a[i].a;
a[i].r = x;
l -= x * a[i].a;
}
sum += a[i].r;
}
sort(a + 1, a + n + 1, comp2);
fcout << sum << '\n';
for (int i = 1; i <= n; i++)
fcout << a[i].r << ' ';
return 0;
}