Cod sursa(job #1020481)

Utilizator Dayanna000Amegica Dayanna Dayanna000 Data 2 noiembrie 2013 09:54:12
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <iostream>
#include <fstream>
using namespace std;
int n,k,v[16001],suma=0,mini=0,i,j;
int verif(int x)
  {
     int c,nr;
     i=1;
     nr=0;
     while(i<=n)
       {
           c=x;
           if(v[i]<=c)
             {
                 while(v[i]<=c && i<=n)
                    {
                       c=c-v[i];
                       i++;
                    }
                 nr++;
             }
       }
    if(nr<=k)
      return 1;
      else
      return 0;
  }
int caut(int st,int dr)
  {
      int mij;
      while(st<=dr)
        {
            mij=(st+dr)/2;
            if(verif(mij)==1 && verif(mij-1)==0)
               return mij;
            if(verif(mij)==0)
              st=mij+1;
              else
              dr=mij-1;
        }
  }
int main()
{
    ifstream f("transport.in");
    ofstream g("transport.out");
    f>>n>>k;
    for(i=1;i<=n;i++)
      {
          f>>v[i];
          suma=suma+v[i];
          if(v[i]>mini)
            mini=v[i];
      }
    if(verif(mini)==1)
      g<<mini;
      else
      g<<caut(mini,suma);
    f.close();
    g.close();
    return 0;
}