Cod sursa(job #895503)

Utilizator gabrielinelusGabriel-Robert Inelus gabrielinelus Data 27 februarie 2013 11:37:51
Problema Transport Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <cstdio>
FILE *f=fopen("transport.in","r");
FILE *g=fopen("transport.out","w");

int n,k,v[16001];
int maxi(int v[16001],int &sum)
{
    int i,max=-1;
    for(i = 1; i <= n; i ++)
        {
            if(v[i]>max)
                max=v[i];
            sum+=v[i];
        }
    return max;
}
int okay(int x)
{
    int times=1,i,semi=0;
    for(i=1;i<=n;i++)
    {
        if(times+v[i]<x)
            semi+=v[i];
        else
            {times++;semi=0;}
    }
}
int cauta(int x1,int x2)
{
    int li,lf,m;
    li=x1;
    lf=x2;
    while(li<=lf)
    {
        m=(li+lf)/2;
        if(okay(m))
            lf=m-1;
        else
            li=m+1;
    }
    return m;
}
int main()
{
    fscanf(f,"%d%d",&n,&k);
    int i,x,sum=0,y;
    for(i = 1; i <= n; i ++)
        fscanf(f,"%d",&v[i]);
    x = maxi(v,sum);
    y=cauta(x,sum);
    fprintf(g,"%d",y+1);
    return 0;
}