Cod sursa(job #487058)

Utilizator darrenRares Buhai darren Data 23 septembrie 2010 17:32:48
Problema Progresii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <fstream>

using namespace std;

int n, m, k, l;
int d[100002], v[100002];
int tot;

int main()
{
	ifstream fin("progresii.in");
	ofstream fout("progresii.out");

	fin >> n >> m >> k >> l;
	for (int i = 1; i <= n; ++i)
	{
		fin >> d[i];
		tot += d[i] + 1;
		v[i] = 1;
	}

	for (int i = n; i >= 1 && tot > k; --i)
	{
		int dif = tot - k;

		if (d[i] - d[i] / m <= dif)
		{
			tot -= d[i], tot += d[i] / m;
			v[i] = m;
		}
		else
		{
			v[i] = d[i] / (d[i] - dif);
			if (v[i] * (d[i] - dif) != d[i])
				++v[i];

			break;
		}
	}

	for (int i = 1; i <= n; ++i)
		fout << v[i] << '\n';

	fin.close();
	fout.close();
}