Cod sursa(job #1005272)

Utilizator Dddarius95Darius-Florentin Neatu Dddarius95 Data 4 octombrie 2013 17:31:29
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <fstream>
#include <vector>
#include <algorithm>
#define Nmax 16099
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");

int n,k,v[Nmax],Max;
long long S,sol=999999999999;


int main()
{
    f>>n>>k;
    for(int i=1;i<=n;i++)f>>v[i],Max=max(Max,v[i]),S+=v[i];
    //,S[i]=S[i-1]+v[i],g<<S[i]<<' '; g<<'\n';
    int left=Max,right=S;
    while(left<=right)
    {
        int middle=(left+right)/2;
        int t=1,sum=0;
        for(int i=1;i<=n;i++)
            if(sum+v[i]<=middle)sum+=v[i];
            else ++t,sum=v[i];
        if(t<=k)
        {
            if(middle<sol)sol=middle;
            right=middle-1;
        }
        else left=middle+1;
    }
    g<<sol<<'\n';
    f.close();g.close();
    return 0;
}