Cod sursa(job #2655830)

Utilizator cyg_mihaizMIHAI ZARAFIU cyg_mihaiz Data 5 octombrie 2020 18:06:38
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <fstream>
#define NMAX 16005
using namespace std;
int v[NMAX];
ifstream fin("transport.in");
ofstream fout("transport.out");
bool check(int n,int k,int target)
{
    int i,s,cnt=0;
    s=0;
    for(i=1;i<=n;i++)
    {
        s=s+v[i];
        if(v[i]>target)
            return 0;
        if(s>target)
            s=v[i],cnt++;
        if(cnt>k)
            return 0;
    }
    if(s>0)
        cnt++;
    if(cnt>k)
        return 0;
    return 1;
}
int bs(int n,int k,int init,int fina)
{
    int st,dr,med,last;
    st=init;
    dr=fina;
    last=fina;
    while(st<=dr)
    {
        med=(st+dr)/2;
        if(check(n,k,med)==1)
            last=med,dr=med-1;
        else
            st=med+1;
    }
    return last;
}
int main()
{
    int n,k,i,ming,maxg;
    fin>>n>>k;
    ming=16001;
    for(i=1;i<=n;i++)
    {
        fin>>v[i];
        ming=min(ming,v[i]);
        maxg=maxg+v[i];
    }
    fout<<bs(n,k,ming,maxg);
    return 0;
}