Cod sursa(job #2427960)

Utilizator teodortatomirTeodor Tatomir teodortatomir Data 3 iunie 2019 09:40:02
Problema Transport Scor 100
Compilator c-64 Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <stdio.h>
#include <stdlib.h>

int v[16001];
int main(){
  FILE *fin,*fout;
  int n,k,maxx,d,s,i,cnt,mij,dr,st;

  fin=fopen("transport.in", "r");
  fout=fopen("transport.out", "w");
  fscanf(fin, "%d%d", &n,&k);
  s=0;
  maxx=0;
  for(i=0;i<n;i++){
    fscanf(fin, "%d", &v[i]);
    if(v[i]>maxx)
      maxx=v[i];
    s+=v[i];
  }
  d=(s+k-1)/k;
  if(maxx>d)
    d=maxx;
  st=d-1;
  dr=d*2;
  while(dr-st>1){
    mij=(dr+st)/2;
    i=0;
    cnt=0;
    while(i<n){
      s=0;
      while(s<mij){
        s=s+v[i];
        i++;
      }
      if(s>mij)
        i--;
      cnt++;
    }
    if(cnt>k)
      st=mij;
    else
      dr=mij;
  }

  fclose(fin);

  fprintf(fout, "%d\n", dr);
  fclose(fout);
  return 0;
}