Cod sursa(job #2089220)

Utilizator mitumitucristinaMitu Cristina mitumitucristina Data 16 decembrie 2017 11:43:59
Problema Transport Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include<iostream>
#include<stdio.h>
using namespace std;
int v[16000];
int main(){
  freopen("transport.in","r",stdin);
  freopen("transport.out","w",stdout);
  int n,k,st,s,dr,i,tk,mij,j;
  cin>>n>>k;
  for(i=1;i<=n;i++)
    cin>>v[i];
  st=1;
  dr=16000;
  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(k==tk){
        break;
      }
      if(k<tk)
        st=mij+1;
      if(k>tk)
        dr=mij-1;

  }
  for(j=mij-1;j>=1;j--){
    s=0;
    tk=1;
    for(i=1;i<=n;i++){
        s+=v[i];
        if(s>j){
          tk++;
          s=v[i];
        }
    }
    if(k<tk){
      cout<<j+1;
      break;
    }
}
  return 0;
}