Cod sursa(job #1203737)

Utilizator DjokValeriu Motroi Djok Data 1 iulie 2014 10:59:44
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.62 kb
#include<fstream>
#include<algorithm>
using namespace std;

int i,n,k,a[16005],rs,st,dr,pivot;

bool valid(int x) {
    int gmb=x,fnc=k;
    for(i=1;i<=n;++i)
    if(gmb<a[i]) gmb=x-a[i],--fnc; 
    else gmb-=a[i];   
    if(gmb>0) --fnc;
    if(fnc>=0) return 1;
 return 0;
}

int main()
{
  ifstream cin("transport.in");
  ofstream cout("transport.out");
  
  cin>>n>>k;
  for(i=1;i<=n;++i) cin>>a[i],dr+=a[i],st=max(st,a[i]);  
  
  rs=dr;
  while(st<=dr)
  {
    pivot=(st+dr)/2;
    if(valid(pivot)) rs=min(rs,pivot),dr=pivot-1;
    else st=pivot+1;  
  }
  
  cout<<rs<<'\n';
    
 return 0;   
}