Pagini recente » Cod sursa (job #1949835) | Cod sursa (job #2918933) | Cod sursa (job #1662925) | Clasament preONI 2007, Runda 1, Clasa a 10-a | Cod sursa (job #2138969)
#include <bits/stdc++.h>
using namespace std;
ifstream in("shop.in");
ofstream out("shop.out");
struct moneda {
long long valoare;
int cantitate;
int pozitie;
};
bool cmpFnc(const moneda a, const moneda b) {
return (a.valoare < b.valoare);
}
int main() {
int n, c;
long long l;
in >> n >> c >> l;
vector< moneda > monezi(n);
for(int i = 0; i < n; ++i) {
int x, y; in >> x >> y;
monezi[i].valoare = pow(1LL * c, 1LL * x);
monezi[i].cantitate = y;
monezi[i].pozitie = i;
}
sort(monezi.begin(), monezi.end(), cmpFnc);
vector< int > solutie(n);
long long total = 0;
for(int i = n - 1; i >= 0; --i) {
long long floor = min(1LL * monezi[i].cantitate, l / monezi[i].valoare);
l -= (floor * monezi[i].valoare);
monezi[i].cantitate -= floor;
solutie[monezi[i].pozitie] = floor;
total += floor;
}
out << total << '\n';
for(int i = 0; i < n; ++i)
out << solutie[i] << " ";
in.close(); out.close();
return 0;
}