Cod sursa(job #1246906)

Utilizator Mitsa3Neamt Mihai Mitsa3 Data 21 octombrie 2014 19:44:30
Problema Transport Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 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 capacitate)
{
    int z = 0;
    for(int i = 1; i<=n; i++)
    {
        if(capacitate>a[i])
            capacitate-=a[i], z++;
        else if(capacitate==a[i])
            return ++z;
        else if(capacitate<a[i])
            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;
}