Cod sursa(job #3260333)

Utilizator Octavian09Dore Octaviam Octavian09 Data 1 decembrie 2024 18:18:04
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <iostream>
#include <fstream>

using namespace std;

int v[16001];
int N,K;
ifstream f("transport.in");
ofstream g("transport.out");

bool verificare(int m){
    int sum=0,gr=K;
    for(int i=1;i<=N;i++){
        sum+=v[i];
        if(sum>m){
            gr--;
            if(gr==0) return false;
            sum=v[i];
        }else if(sum==m){
            gr--;
            if(gr==0){
                if(i==N) return true;
                else return false;
            }
            sum=0;
        }
    }
    return true;
}

int cb(int p,int u){
    int m,poz;
    while(p <=u){
        m=(p+u)/2;
        if(verificare(m)==false){
            p=m+1;
        }else{
            u=m-1;
            poz=m;
        }
    }
    return poz;
}

int main()
{
    int smax=0,sum=0;
    f >> N >> K;
    for(int i=1;i<=N;i++){
        f >> v[i];
        if(v[i]>smax) smax = v[i];
        sum+=v[i];
    }
    g << cb(smax,sum);
    return 0;
}