Cod sursa(job #2126836)

Utilizator sichetpaulSichet Paul sichetpaul Data 10 februarie 2018 00:14:54
Problema Progresii Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include <fstream>

using namespace std;
int sum[100001],d[100001];
int main()
{ int n,Max,k,l,i,s,st,dr,mij,best,poz;
    ifstream f("progresii.in");
    ofstream g("progresii.out");
    f>>n>>Max>>k>>l;
    for (i=1;i<=n;++i) {
        f>>poz;
        d[i]=l-poz;
        sum[i]=sum[i-1]+d[i]/Max+1;
    }
    s=0;
    for (i=1;i<=n;++i) {
        st=1,dr=Max;
        int sol=Max+1;
        best=sum[n]-sum[i];
        while (st<=dr) {
            mij=(st+dr)/2;
            if (s+d[i]/mij+1+best<=k) sol=min(sol,mij),dr=mij-1;
            else st=mij+1;
        }
        s+=d[i]/sol+1;
        g<<sol<<'\n';
    }
    return 0;
}