Cod sursa(job #1246917)

Utilizator Mitsa3Neamt Mihai Mitsa3 Data 21 octombrie 2014 19:58:29
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream fin("transport.in");
ofstream fout("transport.out");
#define MAX 16005
int n, k, mid, rez;
int st = -1, dr = 0;
int a[MAX];
int verif(int mid)
{
    int z = 0, s = 0;
    for(int i = 1; i<=n; i++)
    {
        s+=a[i];
        if(s>mid)
        {
            z++;
            s = 0;
            i--;
        }

    }
    if(s>0)
        z++;
    return z;
}
int main()
{

    fin >> n >> k;
    for(int i = 1; i<=n; i++)
        {
            fin >> a[i];
            st = max(st, a[i]);
            dr+=a[i];
        }

    while(st<=dr)
    {
        mid = (st+dr)/2;
        if(verif(mid)>k)
            st = mid+1;
        else if (verif(mid) <= k)
        {
            rez = mid;
            dr = mid - 1;
        }
    }
    fout << rez;
    return 0;
}