Pagini recente » Cod sursa (job #637702) | Cod sursa (job #1281686) | Cod sursa (job #2302371) | Cod sursa (job #1411562) | Cod sursa (job #728316)
Cod sursa(job #728316)
#include <fstream>
using namespace std;
#define ll long long
int N,K;
ll M,L;
#define Nmax 100011
ll D[Nmax],Sum;
int main()
{
freopen("progresii.in","r",stdin);
freopen("progresii.out","w",stdout);
scanf("%d%d%I64d%I64d",&N,&K,&M,&L);
for (int i=1;i<=N;++i)
{
int x;
scanf("%d",&x);
D[i]=L-x+1;
Sum+= (D[i]-1) / K +1 ;
}
if ( M < Sum )
{
printf("-1\n");
return 0;
}
for (int i=1;i<=N;++i)
{
int cons=( D[i]-1 ) / K +1 ;
int st=1,dr=K,mid;
while ( st<dr )
{
mid=(st+dr)/2;
if ( Sum - cons + (D[i]-1) /mid +1 <= M )
dr=mid;
else
st=mid+1;
}
Sum= Sum - cons + (D[i]-1) /st +1 ;
printf("%d\n",st);
}
return 0;
}