Cod sursa(job #2073122)

Utilizator Seb16Ungureanu Paul Sebastian Seb16 Data 22 noiembrie 2017 18:41:58
Problema Shop Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;

ifstream fin("shop.in");
ofstream fout("shop.out");

int n, c;

unsigned long long l;
unsigned long long sum;
unsigned long long values[33];

vector <int> input;
int coins[33];
int used[33];
int total;

int main() {
	fin >> n >> c >> l;
	for (int i = 0; i < n; ++i) {
		int x, y;
		fin >> x >> y;
		coins[x] = y;

		input.push_back(x);
	}

	values[0] = 1;
	for (int i = 1 ; i < 33; ++i) {
		values[i] = values[i - 1] * c;
	}

	for (int i = 32; i >= 0; --i) {
		if (coins[i] == 0) 
			continue;

		while (sum + values[i] <= l && coins[i] > 0) {
			sum += values[i];
			coins[i]--;
			used[i]++;
			total++;
		}

		if (sum == l) {
			fout << total << '\n';
			for (int j = 0; j < input.size(); ++j) {
				fout << used[input[j]] << ' ';
			}
			break;
		}
	}
	
	fin.close();
	fout.close();
	return 0;
}