Cod sursa(job #1413033)

Utilizator tudor_bonifateTudor Bonifate tudor_bonifate Data 1 aprilie 2015 18:12:59
Problema Progresii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <cstdio>
long long a[100001],l,k,v[100001],s;
int n,m,i,crt,nr;
bool OK;
using namespace std;
int main()
{
    freopen("progresii.in","r",stdin);
    freopen("progresii.out","w",stdout);
    scanf("%d %d %lld %lld\n",&n,&m,&k,&l);
    for (i=1; i<=n; i++)
    {
        scanf("%lld\n",&a[i]);
        a[i]=l-a[i]+1;
    }
    crt=n;
    for (i=1; i<=n; i++) v[i]=1;
    while (OK==false && crt>=1)
    {
        s=0;
        for (i=1; i<=n; i++) s=s+a[i]/v[i];
        if (s>k)
        {
            if (v[crt]>=m) crt--;
            else
            {
                if (v[crt]==a[crt]) crt--;
                else
                {
                    while (a[crt]/v[crt]!=0) v[crt]++;
                    v[crt]--;
                }
            }
        }
        else OK=true;
    }
    if (crt==0) printf("-1\n");
    else for (i=1; i<=n; i++) printf("%lld\n",v[i]);
    return 0;
}