Cod sursa(job #1009193)

Utilizator Iulia_ivanaIulia Ivana Iulia_ivana Data 12 octombrie 2013 16:51:00
Problema Transport Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include<fstream>
using namespace std;

ifstream in("transport.in");
ofstream out("transport.out");

int v[16001],n,k,l=0,r=0,cnt=0,ok=1;

int verif(int x)
{
        int s;
        int g=0;
        int cnt=1;
        while(cnt!=n)
        {
            ok=1;
            s=0;
            while(ok!=0)
            {
                s+=v[cnt++];
                if(s>x)
                {
                    cnt--;
                    g++;
                    ok=0;
                }
                if(cnt==n)
                {
                    g++;
                    ok=0;
                }
            }
        }
        if(g<=k) return 0;
        else return 1;
}

int main()
{
    int mid=0;
    in>>n>>k;
    for(int i=1 ;i<=n; i++)
    {
        in>>v[i];
        r+=v[i];
        if(v[i]>l) l=v[i];
    }


    while(l<r)
    {
        mid=(l+r)/2;
        if(verif(mid)==1)
            l=mid+1;
        else r=mid-1;
    }
    out<<r+2;
    in.close();
    out.close();
    return 0;
}