Pagini recente » Cod sursa (job #1590954) | Cod sursa (job #2247898) | Cod sursa (job #251721) | Cod sursa (job #2228956) | Cod sursa (job #1779565)
#include <cstdio>
#define NMax 100000
#define DIM 10000
#define ll long long
char buff[DIM];
int poz;
int p[NMax+1];
int v[NMax+1];
void citeste(int& numar)
{
numar = 0;
while(buff[poz]<'0'||buff[poz]>'9')
if(++poz==DIM) fread(buff,1,DIM,stdin),poz=0;
while(buff[poz]>='0'&&buff[poz]<='9')
{
numar = numar * 10 + buff[poz] - '0';
if(++poz==DIM) fread(buff,1,DIM,stdin),poz=0;
}
}
int main(){
freopen("progresii.in","r",stdin);
freopen("progresii.out","w",stdout);
int i,N,M,f;
ll rest,K,L,all=0;
scanf("%d %d %lld %lld",&N,&M,&K,&L);
for(i = 1; i <= N; ++i)
{
citeste(p[i]);
if( p[i] > L ) v[i] = 1;
else
{
all = all + (L-p[i])/M;
--K;
v[i] = M;
if( all > K ) { printf("-1\n"); return 0; }
}
}
for(i = 1; i <= N; ++i)
if( p[i] <= L )
{
all = all - (L-p[i])/M;
rest = K-all;
v[i] = (L-p[i])/(rest+1) + 1;
all = all + (L-p[i])/v[i];
}
for(i = 1; i <= N; ++i) printf("%d\n",v[i]);
return 0;
}