Cod sursa(job #931622)

Utilizator rudarelLup Ionut rudarel Data 28 martie 2013 13:17:45
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <stdio.h>
#include <fstream>

using namespace std;
long a[16010],n,kk,poz;
long nr=0;
long S;
long mata;

void citire()
{
   ifstream fin("transport.in");
   fin>>n>>kk;
  for (int i=0;i<n;i++)
  {  fin>>a[i];
     S+=a[i];
     if (mata < a[i]) mata = a[i];
  }
  a[n]=99999999;
  fin.close();
}
 
long parc ()
{
    while (mata<=S)
    {
    int m=(mata+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
    {
        mata=m+1;
    }
    }
return poz;
}
 
int main ()
{
  citire();
  freopen ("transport.out","w",stdout);
  printf("%ld\n",parc());
  fclose(stdout);
  return 0;
}