Cod sursa(job #1512681)

Utilizator LizaSzabo Liza Liza Data 28 octombrie 2015 14:54:53
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <fstream>
#define nmax 16005
#include <algorithm>
using namespace std;
ifstream f1("transport.in");
ofstream f2("transport.out");
int s[nmax],i,n,k,m;
void cit(){
f1>>n>>k;
for(i=1;i<=n;i++){
    f1>>s[i];
    m=max(m,s[i]);
}
}
int check(int x){
    int sum=0,c=0;
    for(i=1;i<=n;i++){
        sum+=s[i];
        if(sum>x){c++; sum=s[i];}
    }
    c++;
    return c<=k;

}
int main(){
    int l,r,sol,mid;
    cit();
    if(k==n){sol=m;}
    else{
    l=m;
    r=nmax*nmax;
    while(l<=r){
        mid=(l+r)/2;
        if(check(mid)){
            sol=mid;
            r=mid-1;
        }
        else{l=mid+1;}
    }}

    f2<<sol<<"\n";

}