Cod sursa(job #3174505)

Utilizator BulbFanAndrei Popescu BulbFan Data 24 noiembrie 2023 20:35:21
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <fstream>
using namespace std;
int v[16001];
int main() 
{
  ifstream cin("transport.in");
  ofstream cout("transport.out");
  int N,K,st,dr,maxi=-1,m,i,s=0,S,k1,sol;
  cin>>N>>K;
  for(i=1;i<=N;i++)
    {
      cin>>v[i];
      if(v[i]>maxi)
      {
        maxi=v[i];
      }
      s=s+v[i];
    }
  st=maxi;
  dr=s;
  while(st<=dr)
    {
      m=(st+dr)/2;
      S=0;
      i=1;
      k1=0;
      while(i<=N)
        {
          S=S+v[i];
          if(S>m)
          {
            S=v[i];
            k1++;
          }
          i++;
        }
      if(S<m && S!=v[i]) k1++;
      if(k1>K) st=m+1;
      else{
        sol=m;
        dr=m-1;
      }
    }
  cout<<sol;
}