Cod sursa(job #1562814)

Utilizator RodoetTeodor Darie Rodoet Data 5 ianuarie 2016 14:53:15
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <fstream>
#include <iostream>
using namespace std;
ifstream in("transport.in");
ofstream out("transport.out");
long long n, k, i; 
long long pas = 16384*16384; 
long long cap = pas;
long long v [16002];
bool ok(long long test)
{
    long long nr = 1, s = 0;
    for (long long i = 0; i < n; i++)
    {
        if (v[i] > test)
        {
			return 0;
		}
        s += v[i];
        if (s > test)
        {   
			s = v[i], nr++;
		}
    }
    return nr <= k;
}
int main()
{
    in >> n >> k; 
	long long test = 0;
    for (i = 0; i < n; i++)
	{
		in >> v[i];
	}
    for (; pas; pas /= 2)
    {
        if (ok (test + pas))
		{
            cap = test + pas;
		}
        else
        {
			test += pas;
		}
    }
    out << cap;
	return 0;
}