Cod sursa(job #1505964)

Utilizator penetavyPene Cosmin-Octavian penetavy Data 19 octombrie 2015 21:45:15
Problema Transport Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <iostream>
#include <fstream>
using namespace std;

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


  return 0;
}