Cod sursa(job #1322106)

Utilizator GeorgianaMMirlogeanu Georgiana GeorgianaM Data 19 ianuarie 2015 19:35:10
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include<iostream>
#include<fstream>

using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");

int n,i,v[16005],k;
int x=25600005;

bool verif(int m)
{int s=0,p=0;
for(int j=1;j<=n;j++)
{if (v[j]>m) return 0;
if (v[j]+s<=m)
 s=s+v[j];
else
{ p++;
  j--;
 s=0;
}

}
  if (p<k)
          return 1;
return 0;
}

void cautare_binara (int stg, int drt)
{
    while (stg <= drt)
    {
        int m=(stg+drt)/2;
        if (verif(m))
        {
            if (x>m)
                x=m;
            drt = m-1;

        }
        else stg = m+1;
    }
    if (stg < x && verif(stg))
        x=stg;
}

int main()
{
    f >> n >> k;
    for (i=1; i<=n; i++)
        f >> v[i];
    cautare_binara(0,x);
    g <<x;
    return 0;
}