Cod sursa(job #2073431)

Utilizator SchnitzelMannPavaloiu Gabriel SchnitzelMann Data 23 noiembrie 2017 09:39:17
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("transport.in");
ofstream out("transport.out");
int arr[16000],n,k,m;
bool check(int x)
{
    if(x<m)
        return 0;
    int i,y=1,s=0;
    for(i=0;i<n;i++)
    {
        if(s+arr[i]>x)
        {
            y++;
            s=arr[i];
        }
        else
            s+=arr[i];
        if(y>k)
            return 0;
    }
    return 1;
}
int main()
{
    int i,pas=1<<30;
    in>>n>>k;
    for(i=0;i<n;i++)
    {
        in>>arr[i];
        if(arr[i]>m)
            m=arr[i];
    }
    i=0;
    while(pas)
    {
        if(!check(i+pas))
            i+=pas;
        pas>>=1;
    }
    out<<i+1;
    return 0;
}