Cod sursa(job #1028382)

Utilizator PasparanPasparan Ana-Maria Pasparan Data 13 noiembrie 2013 22:23:25
Problema Transport Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <stdio.h>
#include<stdlib.h>
#define N 16010
int sal[N],n,k,p,i,sum,u,m,maxim;
int ok(int c)
{
    int i,nr=1,cc=0;
    for(i=1;i<=n;i++)
    {
        if(cc+sal[i]<=c)
            cc+=sal[i];
        else
        {
            nr++;
            cc=sal[i];
        }
    }
    if(nr>k)
        return 0;
    else
        return 1;
}
int main()
{
    FILE *f,*g;
    f=fopen("transport.in","r");
    g=fopen("transport.out","w");
    fscanf(f,"%d %d",&n,&k);
    for(i=1;i<=n;i++)
    {
        fscanf(f,"%d",&sal[i]);
        sum+=sal[i];
        if(sal[i]>maxim)
            maxim=sal[i];
    }
    p=maxim;
    u=sum;
    while(p<=u)
    {
        m=(p+u)/2;
        if(ok(m))
            u=m-1;
        else
            p=m+1;
    }
    fprintf(g,"%d",p);
    return 0;
}