Cod sursa(job #2791908)

Utilizator mariaionescu2006Ionescu Maria mariaionescu2006 Data 31 octombrie 2021 12:49:34
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("transport.in");
ofstream fout ("transport.out");
int n,k;
int v[16001];
int howMany(int cap)
{
    int nrt=1,s=0;
    for (int i=1;i<=n;i++)
        {if (s+v[i]<=cap) {s=s+v[i];}
         else {nrt++;s=v[i];}}
    return nrt;
}
int main()
{
    int left=-1,right=0,sol=0;
    fin >>n>>k;
    for (int i=1;i<=n;i++)
        {fin >>v[i];
         right=right+v[i];
         if (v[i]>left) left=v[i];}
    while (left<=right)
          {int mid;
           mid=(left+right)/2;
           if (howMany(mid)<=k) {sol=mid;
                                 right=mid-1;}
           else {left=mid+1;}}
    fout <<sol;
    return 0;
}