Cod sursa(job #487340)
Utilizator | Data | 24 septembrie 2010 19:07:33 | |
---|---|---|---|
Problema | Progresii | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.47 kb |
#include<fstream>
using namespace std;
long long n,m,k,l,i,j,step,p[100005],rez;
int main()
{ifstream q("progresii.in");
ofstream w("progresii.out");
q>>n>>m>>k>>l;
for(i=1;i<=n;++i)
{q>>p[i];
p[i]=l-p[i];
rez=rez+p[i]/m+1;}
if(rez-k>0)
{w<<"-1\n";
return 0;}
for(i=1;i<=n;++i)
{rez-=p[i]/m+1;
for(step=(1<<30),j=0;step;step>>=1)
if(j+step<=m)
if(rez+(p[i]/(j+step)+1)>k)
j=j+step;
++j;
rez=rez+(p[i]/(j+step)+1);
w<<j<<"\n";}}