Cod sursa(job #486842)

Utilizator freak93Adrian Budau freak93 Data 22 septembrie 2010 21:40:45
Problema Progresii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include<fstream>

using namespace std;

const char iname[]="progresii.in";
const char oname[]="progresii.out";
const int maxn=100005;

ifstream f(iname);
ofstream g(oname);

typedef long long ll;

ll n,m,k,l,i,j,step,p[maxn],rez;

int main()
{
    f>>n>>m>>k>>l;
    for(i=1;i<=n;++i)
        f>>p[i],p[i]=l-p[i],rez+=p[i]/m+1;
    if(rez-k>0)
    {
        g<<"-1\n";
        return 0;
    }
    for(i=1;i<=n;++i)
    {
        rez-=p[i]/m+1;
        for(step=(1<<30),j=0;step;step>>=1)
            if(j+step<=m)
                if(rez+(p[i]/(j+step)+1)>k)
                    j+=step;
        ++j;
        rez+=(p[i]/(j+step)+1);
        g<<j<<"\n";
    }
}