Cod sursa(job #1026397)

Utilizator sddddgjdZloteanu Anastasia sddddgjd Data 11 noiembrie 2013 16:19:48
Problema Grupuri Scor 44
Compilator c Status done
Runda Arhiva de probleme Marime 1.03 kb
#include<stdio.h>
int n,k,v[100000];
int checkpossible(int grupuri)
{
    int col=0,elemcol=0;
    int i=0;
    while(i<n&&col<k)
    {
        elemcol+=v[i];
        if(elemcol>=grupuri)
        {
            col++;
            if(elemcol-v[i]-1>=0)
                elemcol=(elemcol-v[i]-1);
            else
                elemcol=0;
        }
        i++;
    }
    if(col==k)
        return 1;
    else
        return 0;
}
int cautbin(int st,int dr)
{
    int lastgood,mij;
    while(st<dr)
    {
        mij=(st+dr)/2;
        if(checkpossible(mij)==0)
            dr=mij-1;
        else
        {
            lastgood=mij;
            st=mij+1;
        }
    }
    return lastgood;
}
int main()
{
    FILE *fin,*fout;
    fin=fopen("grupuri.in","r");
    fout=fopen("grupuri.out","w");
    fscanf(fin,"%d%d",&k,&n);
    int i;
    long long s=0;
    for(i=0; i<n; i++)
    {
        fscanf(fin,"%d",&v[i]);
        s+=v[i];
    }
    fprintf(fout,"%d",cautbin(0,s/k+1));
    return 0;
}