Cod sursa(job #3005361)

Utilizator anastasiadumitru3Dumitru Anastasia anastasiadumitru3 Data 16 martie 2023 21:50:35
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <iostream>
#include <fstream>

using namespace std;
int v[16000];
bool f(int n, int k, int a){
    int s=0, cnt=0;
  for(int i=1; i<=n; i++){
    s+=v[i];
    if(s>=a) {cnt++; s=v[i];}
  }
  cnt++;
  if(cnt<=k) return 1;
  else return 0;
}
int main()
{
    ifstream in("transport.in");
    ofstream out("transport.out");
    int n, k, i, max1=0, sum=0, st, dr, mij;
    in>>n>>k;
    for(i=1; i<=n; i++){
        in>>v[i];
        sum+=v[i];
        if(v[i]>max1) max1=v[i];
    }
    st=max1;
    dr=sum;
    while(dr-st>1){
        mij=(st+dr)/2;
        if(f(n, k, mij)==1)
            dr=mij;
        else st=mij;
    }
    out<<st;
    return 0;
}