Cod sursa(job #489879)

Utilizator eudanipEugenie Daniel Posdarascu eudanip Data 3 octombrie 2010 22:11:12
Problema Progresii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include<stdio.h>

int v[100005],n,m;
int s[100005],k,l;

int main ()
{
    int i,ac,d,vit,r;
    freopen("progresii.in","r",stdin);
    freopen("progresii.out","w",stdout);
    scanf("%d%d%d%d",&n,&m,&k,&l);
    l++;
    for(i=1;i<=n;i++)
        scanf("%d",&v[i]);
    for(i=n;i>=1;i--)
    {
        r=(l-v[i])%m;
        s[i]=s[i+1]+(l-v[i])/m;
        if(!r)
            s[i]++;
    }
    for(i=1;i<=n;i++)
    {
        ac=k-s[i+1];
        d=l-v[i];
        vit=d/ac;
        if(d%ac)
            vit++;
        if(vit>m)
        {
            printf("-1\n");
            return 0;
        }
        printf("%d\n",vit);
        k-=(d/vit+(d%vit ? 1 : 0));
    }
    
    return 0;
}