Cod sursa(job #1505931)

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

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


  return 0;
}