Cod sursa(job #2293077)

Utilizator lucianistratiIstrati Lucian lucianistrati Data 30 noiembrie 2018 15:16:51
Problema Transport Scor 10
Compilator cpp-32 Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <iostream>
#include <fstream>
using namespace std;
int verificare(int numar,int N,int v[])
{
    int suma=0,i,k=0;
    for(i=1;i<=N;i++)
    {
        if(suma+v[i]<=numar)
        {
            suma=suma+v[i];
        }
        else
        {
            k++;
            suma=v[i];
        }
    }
    if(k>=numar)
    {
        return 0;
    }
    else
    {
        return 1;
    }
}
int main()
{
   ifstream fin("transport.in");
   ofstream fout("transport.out");
   int N,K,st,dr,mijloc,i,v[16001],maxim=-1,suma=0;
   fin>>N>>K;
   for(i=1;i<=N;i++)
   {
       fin>>v[i];
       suma=suma+v[i];
       maxim=max(v[i],maxim);
   }
   st=maxim;
   dr=suma;
   while(st<=dr)
   {
       mijloc=st+(dr-st)/2;
       if(verificare(mijloc,N,v)==1)
       {
           maxim=mijloc;
           dr=mijloc-1;
       }
       else
       {
           st=mijloc+1;
       }
   }
   fout<<maxim;
   fin.close();
   fout.close();
   return 0;
}