Cod sursa(job #2332696)

Utilizator denmirceaBrasoveanu Mircea denmircea Data 31 ianuarie 2019 00:44:25
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream  fin("transport.in");
ofstream fout("transport.out");
long long n,act,nr;
long long k,i;
long long v[17000];
int estee(int x){
    // daca valoarea x ajunge pt k transporturi in vectorul v
long long st=1,dr=n,act=0,nr=0,mid;
while(act!=n){
        nr++;
    st=act+1;
    dr=n;
    /// 1 3 4 5 6 7
    /// 0 0 0 0 0 1
    ///    x=6    mid x
    long long xx=v[act]+x;
while(st<=dr){
    mid=(st+dr)/2;
    if(v[mid]<=xx)
     st=mid+1;
    else
    dr=mid-1;
}
act=dr;
if(v[act]+x<v[act+1]&&act!=n)
    return 0;
}

if(nr>k)
return 0;
return 1;
}
int main()
{
    fin>>n>>k;
    long long x;
    for(i=1;i<=n;i++){
        fin>>x;
        v[i]=v[i-1]+x;
    }
    long long st=1;
    long long dr=16000*16000,mid;
    while(st<=dr){
         mid=(dr-st)/2+st;
    if(estee(mid)==1)
        dr=mid-1;
    else
        st=mid+1;

    }
    fout<<st;
}