Cod sursa(job #1646896)

Utilizator tothalToth Alexandru tothal Data 10 martie 2016 18:08:55
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <fstream>
using namespace std;
int n,k;
ifstream fin("transport.in");
ofstream fout("transport.out");
int a[16005],Max;
int nrtrans(int x)
{
   int c=1,s1=0;
    for(int i=1;i<=n;i++)
    {
        if((a[i]+s1)<=x)
            s1+=a[i];
        else
        {
            c++;
            s1=a[i];
        }
    }
    return c;
}
void rez()
{
  int d;
int  Left=Max,Right=256000000,mid,sol;
 while(Left<=Right)
    {
      mid=(Left+Right)/2;
        d=nrtrans(mid);
      if(d<=k)
        {
          sol=mid;
           Right=mid-1;
        }
        else if(d>k) Left=mid+1;
    }
    fout<<sol;
}
int main()
{
    fin>>n>>k;
    for(int i=1;i<=n;i++)
       {
        fin>>a[i];
            if(a[i]>Max)
                Max=a[i];}
  rez();

}