Cod sursa(job #2219463)

Utilizator richard26Francu Richard richard26 Data 8 iulie 2018 23:58:35
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <iostream>
#include <fstream>

using namespace std;

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

int v[16001],n,k ;

int cautb(int st, int dr)
{
    int sum=0,nrtransport=0,i,sol ;
    while(st<=dr)
    {
        nrtransport=0 ;
        sum=0 ;
        int mij=(st+dr)/2 ;
        for(i=1;i<=n;i++)
        {
            sum=sum+v[i] ;
            if(sum>mij)
            {
                sum=v[i] ;
                nrtransport++ ;
                if(i==n) nrtransport++ ;

            }
             else if(sum==mij)
             {
                 sum=0 ;
                 nrtransport++ ;
             }
              else if(i==n) nrtransport++ ;
        }
        if(nrtransport<=k)
        {
            sol=mij ;
            dr=mij-1 ;
        }
          else st=mij+1 ;
    }

    return sol ;
}
int main()
{
    int sum=0, i, maxi=-1 ;
    f>>n>>k ;
    for(i=1;i<=n;i++)
    {
        f>>v[i] ;
        if(v[i]>maxi) maxi=v[i] ;
        sum=sum+v[i] ;

    }
    int m=cautb(maxi,sum) ;
    g<<m ;

    return 0 ;


}