Pagini recente » Cod sursa (job #950023) | Cod sursa (job #1912089) | Cod sursa (job #316511) | Cod sursa (job #2111535) | Cod sursa (job #809486)
Cod sursa(job #809486)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
long long N, C, L, nr = 1, ap[35], sol[35];
pair<long long, long long> A[35], B[35];
long long power(long long A, long long B) // A^B
{
long long ret = 1;
for (int i = 1; i <= B; ++i)
{
ret = ret * A;
}
return ret;
}
int main()
{
ifstream fin("shop.in");
ofstream fout("shop.out");
fin >> N >> C >> L;
// C^A[i] ai de B[i] ori
for (int i = 1; i <= N; ++i)
{
fin >> A[i].first >> A[i].second;
B[i] = A[i];
}
long long sm = 0;
for (int i = 1; i <= N; ++i)
{
long long mx = -1, poz;
for (int j = 1; j <= N; ++j)
{
if (mx < A[j].first && !ap[j])
{
mx = A[j].first;
poz = j;
}
}
//cout << mx << ' ' << poz << '\n';
ap[poz] = 1;
long long nr = power(C, A[poz].first);
//cout << nr << " " << A[poz].second << '\n';
long long cat = L / nr;
//cout << "C si nr: " << C << ' ' << nr << " " << cat << '\n';
//cout << L << '\n';
if (cat > A[poz].second)
{
cat = A[poz].second;
}
L = L - nr * cat;
sm += cat;
sol[poz] = cat;
}
fout << sm << '\n';
for (int i = 1; i <= N; ++i)
{
fout << sol[i] << ' ';
}
fout.close();
return 0;
}