Cod sursa(job #2089267)

Utilizator mitumitucristinaMitu Cristina mitumitucristina Data 16 decembrie 2017 12:05:16
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.62 kb
#include<iostream>
#include<stdio.h>
using namespace std;
int v[16001];
int main(){
  freopen("transport.in","r",stdin);
  freopen("transport.out","w",stdout);
  int n,k,st,s,elem,dr,i,tk,mij,j,maxim=-1,sum=0;
  cin>>n>>k;
  for(i=1;i<=n;i++){
    cin>>v[i];
    if(v[i]>maxim)
      maxim=v[i];
    sum+=v[i];
}
  st=maxim;
  dr=sum;
  while(st<=dr){
    mij=(st+dr)/2;
    tk=1;
    s=0;
    for(i=1;i<=n;i++){
      s+=v[i];
      if(s>mij){
        tk++;
        s=v[i];
      }

    }
   if(tk>k)
    st=mij+1;
   else{
    elem=mij;
    dr=mij-1;
   }

  }
  cout<<elem;

  return 0;
}