Pagini recente » Cod sursa (job #885618) | Cod sursa (job #2657989) | Cod sursa (job #1345251) | Cod sursa (job #2669919) | Cod sursa (job #470700)
Cod sursa(job #470700)
#include <fstream>
using namespace std;
long long a[1<<17];
int m;
ifstream in("progresii.in");
ofstream out("progresii.out");
int bsearch(long long d,long long n)
{
int i,step=1<<30;
for (i=0;step;step>>=1)
if (i+step<=m && (d+i+step-1)/(i+step)>n)
i+=step;
return i+1;
}
int main()
{
long long cant=0,k,l;
int n,i,x;
in>>n>>m>>k>>l;
for (i=1;i<=n;i++)
{
in>>a[i];
a[i]=l-a[i]+1;
cant+=(a[i]+m-1)/m;
}
if (cant>k)
{
out<<"-1\n";
return 0;
}
for (i=1;i<=n;i++)
{
cant-=(a[i]+m-1)/m;
x=bsearch(a[i],k-cant);
cant+=(a[i]+x-1)/x;
out<<x<<"\n";
}
return 0;
}