Cod sursa(job #832270)

Utilizator emiemiEmi Necula emiemi Data 10 decembrie 2012 11:02:37
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include<cstdio>
using namespace std;
FILE *f,*g;
int maxi,s,ld,ls,mij,nr,n,k,i,v[16001];
int verifica(int x)
{
    int sum,i,p;
    i=1; sum=0; p=k;
    while(sum+v[i]<=x&&i<=n)
    {
        sum+=v[i];
        ++i;
        if(sum+v[i]>x)
        {
            --p;
            sum=0;
            if(p==0)
            break;
        }
    }
    if(i>n)
    return 1;
    return 0;
}
int main()
{
    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",&v[i]);
        s+=v[i];
    }
    ld=s/k; ls=s; nr=0;
    while(ld<=ls)
    {
        mij=(ld+ls)/2;
        if(verifica(mij))
        {
            nr=mij;
            ls=mij-1;
        }
        else
        {
            ld=mij+1;
        }
    }
    fprintf(g,"%d",nr);
    return 0;
}