Cod sursa(job #3316945)

Utilizator baskberrin bask Data 21 octombrie 2025 14:51:21
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.01 kb
#include<fstream>
#include<algorithm>
#include<queue>
#include<iomanip>
#include<map>
#include<stack>
#include<cmath>
#include<cstring>
using namespace std;
//#define int long long 
ifstream cin("transport.in");
ofstream cout("transport.out");
std ::stack<int> s;
int k;
bool verif(int x)
{
   
    std ::stack<int> sc=s;
    int sum=0;
    int cnt=0;
    while(!sc.empty())
    {
        sum+=sc.top();
        if(sum>x)
        {
           sum=0;
           cnt++;
           if(cnt>k)
           return false;
        }
        else
        sc.pop();

    }
    if(sum!=0)
      cnt++;
   if(cnt<=k)
     return true;
   return false;     

}
int main()
{
   int n;
   cin>>n;

   cin>>k;
   int ss=0;
   for(int i=1;i<=n;i++)
   {
      int x;
      cin>>x;
      ss+=x;
      s.push(x);
   }
   int st=1, dr=ss;
   int ans=0;
   while(st<=dr)
   {
      int mid=(st+dr)/2;
      if(verif(mid)==true && mid>=n/k)
      {
         ans=mid;
         dr=mid-1;
      }
      else
      st=mid+1;

   }
   cout<<ans;


   return 0;
}