Cod sursa(job #489892)

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

#define ll long long

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

int main ()
{
    ll i,ac,d,vit,r;
    freopen("progresii.in","r",stdin);
    freopen("progresii.out","w",stdout);
    scanf("%lld%lld%lld%lld",&n,&m,&k,&l);
    l++;
    for(i=1;i<=n;i++)
        scanf("%lld",&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(!ac)
            vit=m+1;
        else
            if(d%ac)
                vit++;
        if(vit>m)
        {
            printf("-1\n");
            return 0;
        }
        printf("%lld\n",vit);
        k-=(d/vit+(d%vit ? 1 : 0));
    }
    
    return 0;
}