Cod sursa(job #1555427)

Utilizator elevenstrArina Raileanu elevenstr Data 22 decembrie 2015 19:28:47
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <bits/stdc++.h>

using namespace std;
ifstream in("transport.in");
ofstream out("transport.out");
long long n,k,v[16009],st,dr;
int get_nr(int cap)
{
    long long act=0,nr=1;
    for(int i=1;i<=n;i++)
    {
        act=act+v[i];
        if(act>cap){act=v[i];++nr;}
    }
    return nr;
}
int main()
{   int sol;
    //k transporturi,C decimetri cubi
    in>>n>>k;
    in>>v[1];
    st=v[1];
    dr=v[1];
    for(long long  i=2;i<=n;i++)
        {in>>v[i];
         st=max(st,v[i]);
         dr=dr+v[i];
        }
    while(st<=dr)
    {  long long med=(st+dr)/2;
       if(get_nr(med)>k)st=med+1;
       else {dr=med-1;}
    }
    out<<st;
    return 0;
}