Cod sursa(job #1967223)

Utilizator PetrescuAlexandru Petrescu Petrescu Data 16 aprilie 2017 11:16:43
Problema Transport Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <stdio.h>
#include <iostream>
#define MAX 16000
#define MAX2 256000000

using namespace std;
int v[MAX];
int main()
{
  FILE *fin, *fout;
  int n, k, i, st, dr, mij, nrt, suma;

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