Pagini recente » Cod sursa (job #1289977) | Cod sursa (job #3334416) | Diferente pentru problema/flip intre reviziile 3 si 2 | Cod sursa (job #1691103) | Cod sursa (job #3316945)
#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;
}