Cod sursa(job #1505897)

Utilizator penetavyPene Cosmin-Octavian penetavy Data 19 octombrie 2015 20:52:50
Problema Transport Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#include <iostream>
#include <fstream>
using namespace std;

int main(){
  ifstream fin("transport.in");
  ofstream fout("transport.out");
  int N,K,v[16000],i,vmax=0,s=0,dr,st,mij,sum=0,p=1,k2=0;
  fin>>N>>K;
  for(i=1;i<=N;i++){
    fin>>v[i];
    s+=v[i];
    if(v[i]>vmax)
      vmax=v[i];
  }
  dr=s;
  st=vmax;
  while(st<=dr){
    mij=(st+dr)/2;
    for(i=N;i>=1;i--){
      sum+=v[i];
      while(sum<=mij){
        sum+=v[i-p];
        p++;
      }
      k2++;
      sum=0;
      i=i-p;
      p=1;
    }
    if(k2<=K)
      dr=mij-1;
    else if(k2>=K)
      st=mij+1;
  }
  fout<<mij;


  return 0;
}