Cod sursa(job #164440)

Utilizator savimSerban Andrei Stan savim Data 24 martie 2008 11:00:00
Problema Progresii Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include <stdio.h>
int sum,x,n,m,k,l,i;
int conc[100010];
int poz[100010];
int main()
{
    freopen("progresii.in","r",stdin);
    freopen("progresii.out","w",stdout);

    scanf("%d%d%d%d",&n,&m,&k,&l);
    for (i=1; i<=n; i++) scanf("%d",&poz[i]);

    sum=0;
    for (i=1; i<=n; i++)
    {
        conc[i]=m;
        sum++;
        sum=sum+(l-poz[i])/m;
    }

    if (sum>k) printf("-1\n");
    else
    {
        for (i=1; i<=n; i++)
        {
            sum=sum-((l-poz[i])/m+1);

            x=k-sum;
            if (l-poz[i]+1<x)
            {
                x=l-poz[i]+1;
                conc[i]=1;
            }
            else
            {
                conc[i]=(l-poz[i]+1)/x;
                if ((l-poz[i]+1)%x!=0) conc[i]++;
                x=(l-poz[i]+1)/conc[i];
                if ((l-poz[i]+1)%conc[i]!=0) x++;
            }

            sum+=x;
        }
        for (i=1; i<=n; i++)
            printf("%d\n",conc[i]);
    }


    return 0;
}