Cod sursa(job #2138969)

Utilizator Teodor.mTeodor Marchitan Teodor.m Data 21 februarie 2018 23:31:51
Problema Shop Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#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;
}