Pagini recente » Cod sursa (job #689427) | Cod sursa (job #1939490) | Cod sursa (job #1391770) | Cod sursa (job #1089578) | Cod sursa (job #2126847)
#include <fstream>
using namespace std;
long long sum[100001],d[100001];
int main()
{ long long Max,k,l,s,best,poz;
int n,i,st,dr,mij;
ifstream f("progresii.in");
ofstream g("progresii.out");
f>>n>>Max>>k>>l;
for (i=1;i<=n;++i) {
f>>poz;
d[i]=l-poz;
sum[i]=sum[i-1]+d[i]/Max+1;
}
s=0;
for (i=1;i<=n;++i) {
st=1,dr=Max;
int sol=Max+1;
best=sum[n]-sum[i];
while (st<=dr) {
mij=(st+dr)/2;
if (s+d[i]/mij+1+best<=k) sol=min(sol,mij),dr=mij-1;
else st=mij+1;
}
if (i==1 && sol>Max) {
g<<"-1"<<'\n';
break;
}
s+=d[i]/sol+1;
g<<sol<<'\n';
}
return 0;
}