Cod sursa(job #2208552)

Utilizator mmocanuMocanu Mihai-Adrian mmocanu Data 30 mai 2018 12:57:53
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <stdio.h>

int v[16001];

int main(){
  int n,k,st,dr,sum,c,r,i,m;
  FILE *fin,*fout;

  fin=fopen("transport.in","r");
  fout=fopen("transport.out","w");
  fscanf(fin,"%d%d",&n,&k);

  dr=0;
  st=0;
  for(i=1;i<=n;i++){
    fscanf(fin,"%d",&v[i]);
    if(v[i]>st){
      st=v[i];
    }
    dr+=v[i];
  }

  r=0;
  while(st<=dr){
    m=(st+dr)/2;
    sum=0;
    c=1;
    for(i=1;i<=n;i++){
      if(sum+v[i]>m){
        c++;
        sum=v[i];
      }else{
        sum+=v[i];
      }
    }
    if(c>k){
      st=m+1;
    }else{
      r=m;
      dr=m-1;
    }
  }

  fprintf(fout,"%d",r);

  fclose(fin);
  fclose(fout);

  return 0;
}