Cod sursa(job #1157174)

Utilizator ionut98Bejenariu Ionut Daniel ionut98 Data 28 martie 2014 12:09:43
Problema Progresii Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include<cstdio>
using namespace std;
long long p,u,mij,j,n,m,k,l,i,t,spm,pm,vv,x;
long long v[100101];
int main()
{
    FILE*f=fopen("progresii.in","r");
    fscanf(f,"%lld %lld %lld %lld",&n,&m,&k,&l);
    for(i=1;i<=n;i++)
    {
        fscanf(f,"%lld",&x);
        v[i]=l-x;
        pm=1+v[i]/m;
        spm+=pm;
    }
    FILE*g=fopen("progresii.out","w");
    if (spm<=k)
    {
        for (i=1;i<=n;i++)
        {
            vv=spm-(1+v[i]/m);
            p=1;
            u=m;
            while (p<=u)
            {
                 mij=(p+u)/2;
                 if(vv>k-(1+v[i]/mij))
                 {
                     p=mij+1;
                 }
                 else
                     u=mij-1;
            }
            t=p;
            fprintf(g,"%lld\n",t);
            spm-=(1+v[i]/m);
            k-=(1+v[i]/t);
        }
    }
    else
    fprintf(g,"-1");
    return 0;
}