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