Cod sursa(job #2437355)

Utilizator EduardSanduSandu Eduard Alexandru EduardSandu Data 9 iulie 2019 13:25:16
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int v[16001];
int posib=0,n,k;
int verif(int mij)
{
    posib=0;
    int kk=0;
    for(int i=1;i<=n;i++)
    {
        if(v[i]>mij){
            posib=k+1;
            return 0;
        }
        else
        {
            if(kk+v[i]>mij){
                posib++;
                if(v[i]<=mij)
                    kk=v[i];
                else
                {
                    posib=k+1;
                    return 0;
                }
            }
            else
                kk+=v[i];
            if(posib>k)
                return 0;
        }
    }
    posib++;
    return (posib<=k);
}
int main()
{
    int c,i,j,suma=0,st=1,dr,last,minim=0,mij;
    fin>>n>>k;
    for(i=1;i<=n;i++)
        {
            fin>>v[i];
            suma += v[i];
        }
    dr=suma;
    last=(st+dr)/2;
   while(st<dr)
   {
       mij=(st+dr)/2;
       if(verif(mij)==1)
            dr=mij;
       else
            st=mij+1;
   }
   fout<<st;
   return 0;
}