Cod sursa(job #2682869)

Utilizator Robert.BrindeaBrindea Robert Robert.Brindea Data 9 decembrie 2020 19:56:11
Problema Transport Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <iostream>
#include<fstream>
 
using namespace std;
 
ifstream fin ("transport.in");
ofstream fout ("transport.out");
 
const int MAXN = 16002;
 
int n, k, a[MAXN], res = MAXN*MAXN;
 
int caut(int lo, int hi)
{
    if(lo > hi) return -1;
    int mid = lo + (hi-lo)/2;
    int t = 1, crt = a[0];
    if(a[0] > mid) return caut(mid+1, hi);
 
    for(int i = 1; i < n; i++)
    {
        if(a[i] => mid) return caut(mid+1, hi);
 
        if(crt+a[i] <= mid)
            crt += a[i];
        else
        {
            crt = a[i];
            t++;
        }
    }
    if(t == k) res = min(res, mid);
    if(t <= k) return caut(lo, mid-1);
    else if(t > k) return caut(mid+1, hi);
}
 
int main()
{
    fin >> n >> k;
    for(int i = 0; i < n; i++)
        fin >> a[i];
    caut(0, MAXN*MAXN);
    fout << res;
    return 0;
}