Cod sursa(job #2071463)

Utilizator Andrei.GheorgheAndrei Gheorghe Andrei.Gheorghe Data 20 noiembrie 2017 18:19:36
Problema Transport Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.19 kb
#include<fstream>
#include<math.h>
#include<algorithm>
using namespace std;
int main()
{
    ifstream cin("transport.in");
    ofstream cout("transport.out");
    int n,k,i,v[16000],s,l=0,nr=0,h=0,g=0,mij,f=0;
    cin>>n>>k;
    for(i=0;i<n;i++){cin>>v[i];f=f+v[i];}
    s=*max_element(v,v+n);
    mij=(s+f)/2;
    while(h==0)
    {
        nr=0;
        l=0;
        for(i=0;i<n;i++)
        {
            l=l+v[i];
            if(l>mij)
            {
                l=0;
                nr++;
                i--;
            }
        }
        if(nr+1<k)
        {
            f=mij;
            mij=(s+f)/2;
        }
        if(nr+1>k)
        {
            s=mij;
            mij=(s+f)/2;
        }
        if(nr+1==k)
        {
            h=1;
        }
    }
    while(g==0)
    {
        l=0;
        nr=0;
        for(i=0;i<n;i++)
        {
            l=l+v[i];
            if(l>mij)
            {
                l=0;
                nr++;
                i--;
            }
        }
        if(nr+1==k)
        {
            mij--;
        }
        else
        {
            mij++;
            g=1;
        }
    }
    cout<<mij;
}