Cod sursa(job #2446256)

Utilizator bogdanmicamica bogdan bogdanmica Data 7 august 2019 15:52:56
Problema Transport Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <iostream>
#include<fstream>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
const int nmax=16000;
const int kmax=16000;
int n,k,total,maxim,saltele[nmax];

int verifica(int c)
{
    int cont=0,i=1;
    while(i<=n)
    {
        int sum=0;
        while(1)
        {
            if(sum+saltele[i]<=c)
                {sum+=saltele[i];
                i++;
                }
            else break;
        }
        cont++;
    }
    if(cont==k)
        return 0;
    if(cont<k)
        return -1;
    if(cont>k)
        return 1;

}

int cautbin(int st,int dr)
{
    int sol=-1,mij,poz;
    while(st<=dr)
    {mij=st+ (dr-st)/2;
    int verif=verifica(mij);
    if(verif==0)
        {poz=mij;
        dr=mij-1;
        }
    else
    {
        if(verif==1)
            st=mij+1;
        else
            dr=mij-1;
    }

    }
    return poz;

}

int main()
{f>>n>>k;
int i,j;
for(i=1;i<=n;i++)
    {f>>saltele[i];
    total+=saltele[i];
    if(maxim<saltele[i])
        maxim=saltele[i];
    }
g<<cautbin(maxim,total);


    return 0;
}