Cod sursa(job #1937881)

Utilizator mionelIon. M mionel Data 24 martie 2017 12:51:41
Problema Transport Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.14 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
int V[16001];
int Nrtransporturi(int k,int V[],int c,int n);
int Cautarebinara(int max,int s,int k,int n)
{int s1=max,d1=s,m,ok=0,l;
while(s1<=d1&&ok==0)
{
    m=s1+(d1-s1)/2;
   l=Nrtransporturi(k,V,m,n);
  if(l==1)
    {
    m=m-1;
    l=Nrtransporturi(k,V,m,n);
    while(l==1)
    {
        m--;
        l=Nrtransporturi(k,V,m,n);
    }
        m++;
        return m;
    }
  else if(s1==d1)
         return m;
    {if(l==0)
        d1=m-1;
       if(l==2)
        s1=m+1;}
}

}
int Nrtransporturi(int k,int V[],int c,int n)
 {int i, nr=0,ok,s;
 i=0;
  while(i<n )
  {s=0;
      do{i++;
        s=s+V[i];
      }
      while(s<=c&&i<=n);
      //if(s>c)
        i--;
    nr++;
  if(nr>k+1 )
    return 2;
  }
if(nr==k)
    ok=1;
if(nr>k)
    ok=2;
if(nr<k)
    ok=0;
return ok;
 }
int main()
{int n,i,k,max=-1,s=0;
f>>n>>k;
for(i=1;i<=n;i++)
    {f>>V[i];
     s=s+V[i];
     if(max<V[i])
        max=V[i];}

g<<Cautarebinara(max,s,k,n);
 f.close();
 g.close();
    return 0;
}