Pagini recente » Cod sursa (job #646333) | Cod sursa (job #2091861) | Borderou de evaluare (job #2010588) | Cod sursa (job #915279) | Cod sursa (job #2765632)
#include <fstream>
#include <algorithm>
using namespace std;
int n, C;
long long L;
pair<pair<long long, long long>, long long> v[31];
void read() {
int i;
ifstream f("shop.in");
f >> n >> C >> L;
for (i = 1; i <= n; i++) {
f >> v[i].first.first >> v[i].first.second;
v[i].second = i;
}
}
long long monezi[31];
long long nr;
bool csort(pair<pair<long long, long long>, long long> a, pair<pair<long long, long long>, long long> b) {
if (a.first.first > b.first.first)
return 1;
return 0;
}
long long exp(long long a, long long b) {
long long P = 1;
while (b) {
if (b & 1)
P = P * a;
a = a * a;
b /= 2;
}
return P;
}
void solve() {
int i;
sort(v + 1, v + n + 1, csort);
for (i = 1; i <= n; i++) {
monezi[i] = min(L / exp(C, v[i].first.first), v[i].first.second);
L -= monezi[i] * exp(C, v[i].first.first);
nr += monezi[i];
}
}
void output() {
int i, j;
ofstream g("shop.out");
g << nr << '\n';
for (i = 1; i <= n; i++)
for (j = 1; j <= n; j++)
if (v[j].second == i)
g << monezi[j] << ' ';
g.close();
}
int main() {
read();
solve();
output();
return 0;
}