Cod sursa(job #3263606)

Utilizator Mihnea07Rotaru Mihnea Mihnea07 Data 15 decembrie 2024 14:39:21
Problema Transport Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <bits/stdc++.h>

using namespace std;
ifstream in("transport.in");
ofstream out("transport.out");
int v[1004];
int n,k;

int cal(int x)
{
    int cnt=0;
    int camion=0;
    for(int i=0;i<n-1;i++)
    {
        if(camion+v[i]<=x)
        {
            camion+=v[i];
        }
        else{
            cnt++;
            camion=v[i];
        }
    }
    if(camion+v[n-1]>x)
    {
        cnt=cnt+2;
    }
    else{
        cnt++;
    }


    return cnt;
}
int main(){


    in>>n>>k;
    int nmax=0;
    for(int i=0;i<n;i++)
    {
        in>>v[i];
        if(nmax<v[i])
        {
            nmax=v[i];
        }
    }
    int st=nmax,dr=1000000;
    int res=1000000;
    while(st<=dr)
    {

        int mid=(st+dr)/2;
        int sum=cal(mid);
        if(sum<=k)
        {
            res=mid;
            dr=mid-1;
        }
        else{
            st=mid+1;
        }

    }
    out<<res;

    return 0;
}