Cod sursa(job #671460)

Utilizator test9cosmin Macovei test9 Data 31 ianuarie 2012 15:31:08
Problema Progresii Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.62 kb
#include <fstream>
using namespace std;

ifstream in("progresii.in");
ofstream out("progresii.out");

long long n,v,l,d,sl;
long long pi[100100],sol[100100];
int main()
{
	in>>n>>v>>l>>d;
	for(int i=1;i<=n;++i)
	{
		in>>pi[i];
		sol[i]=v;
		sl+=(d-pi[i])/v+1;
	}

    if(sl>l)
    {
        out<<"-1\n";
    }
    else
	for(int i=1;i<=n;++i)
	{
		long long nr=sol[i],cnt=(1LL<<32);
		sl-=(d-pi[i])/v+1;
		for(;cnt>0;cnt>>=1)
			if(nr-cnt>0)
				if(sl+(d-pi[i])/(nr-cnt)+1<=l) nr-=cnt;

		sl+=(d-pi[i])/nr+1;
		sol[i]=nr;
	}

	for(int i=1;i<=n;++i)
		out<<sol[i]<<'\n';

	out.close();
	return 0;
}