Cod sursa(job #2136055)

Utilizator Ruxandra985Nanu Ruxandra Laura Ruxandra985 Data 19 februarie 2018 16:27:18
Problema Grupuri Scor 36
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <cstdio>

using namespace std;
int v[100001],n,k;
int verif (int mid){
    int i,c,l;
    c=0;
    l=-1;
    for (i=1;i<=n;i++){
        l+=v[i];
        if (l>=mid){
            c=c+l/mid;
            l%=mid;
        }
    }
    if (c>=k || (c==k-1 && l==mid-1))
        return 1;
    return 0;
}
int main()
{
    FILE *fin=fopen ("grupuri.in","r");
    FILE *fout=fopen ("grupuri.out","w");
    int i,ok;
    long long st,dr=0,mid;
    fscanf (fin,"%d%d",&k,&n);
    for (i=1;i<=n;i++){
        fscanf (fin,"%d",&v[i]);
        dr+=v[i];
    }
    st=v[n-k+1];
    dr/=k;
    while (st<=dr){
        mid=(st+dr)/2;
        //printf ("%d ",mid);
        ok=verif(mid);
        if (ok)
            st=mid+1;
        else dr=mid-1;
    }
    fprintf (fout,"%lld",dr);
    return 0;
}