Pagini recente » Cod sursa (job #3283003) | Cod sursa (job #3202289) | Cod sursa (job #3293679) | Diferente pentru implica-te/arhiva-educationala intre reviziile 203 si 204 | Cod sursa (job #2916095)
#include <fstream>
#include <algorithm>
#define int long long
using namespace std;
const int MAX_N = 30;
struct Coin {
int a;
int b;
int ind;
};
bool operator < (const Coin &a, const Coin &b) {
return a.a > b.a;
}
Coin coins[MAX_N + 1];
int answer[MAX_N + 1];
int n, c, l;
signed main() {
ifstream fin("shop.in");
ofstream fout("shop.out");
fin >> n >> c >> l;
for (int i = 1; i <= n; i++) {
fin >> coins[i].a >> coins[i].b;
coins[i].ind = i;
}
sort(coins + 1, coins + n + 1);
int cnt = 0;
for (int i = 1; i <= n; i++) {
int power = 1;
for (int j = 1; j <= coins[i].a; j++) {
power *= c;
}
answer[coins[i].ind] = min(l / power, coins[i].b);
l -= power * answer[coins[i].ind];
cnt += answer[coins[i].ind];
}
fout << cnt << "\n";
for (int i = 1; i <= n; i++) {
fout << answer[i] << " ";
}
return 0;
}