Cod sursa(job #931614)

Utilizator rudarelLup Ionut rudarel Data 28 martie 2013 13:14:16
Problema Transport Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <stdio.h>
#include <fstream.h>
long a[16010],n,kk,poz;
long nr=0;
long S,max=0;
void citire()
{
   ifstream fin("transport.in");
   fin>>n>>kk;
  for (int i=0;i<n;i++)
  {  fin>>a[i];
     S+=a[i];
     max=max>a[i]?max:a[i];
  }
  a[n]=99999999;
  fin.close();
}
 
long parc ()
{
    while (max<=S)
    {
    int m=(max+S)/2;
    int S1=0;
    int tra=0;
    for (int i=0;i<n;i++)
    {
        S1=S1+a[i];
        if (S1+a[i+1]>m)
        {
        tra++;
        S1=0;
        }
    }
    if (tra<=kk)
    {
        poz=m;
        S=m-1;
    }
    else
    {
        max=m+1;
    }
    }
return poz;
}
 
int main ()
{
  citire();
  freopen ("transport.out","w",stdout);
  printf("%ld\n",parc());
  fclose(stdout);
  return 0;
}