Pagini recente » Cod sursa (job #3178265) | Cod sursa (job #383833) | Cod sursa (job #1893750) | Cod sursa (job #2203555) | Cod sursa (job #2750618)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
int n,k,salt,sum,gas,p,ant2,k2,max1,min_min;
vector<int> v,suma;
bool inceput=true;
int caut_binara(int st,int dr,int num,int ant)
{
int mij=(st+dr+1)/2;
if(ant!=mij)
{
if(num==suma[mij]-gas)
{
return mij;
}
else if(num<suma[mij]-gas)
{
caut_binara(st,mij,num,mij);
}
else if(suma[mij]-gas<num)
{
caut_binara(mij,dr,num,mij);
}
}
else
{
return mij;
}
}
void af(int pos)
{
int pos2=pos;
k2=1;
max1=suma[pos];
while(pos2<n && k2<k)
{
pos2=caut_binara(pos2+1,n-1,suma[pos2],-1);
gas=suma[pos];
pos=pos2;
k2++;
max1=max(max1,suma[pos2]-gas);
}
}
int main()
{
ifstream fin("transport.in");
ofstream fout("transport.out");
fin>>n>>k;
for(int i=0;i<n;i++)
{
fin>>salt;
v.push_back(salt);
sum+=salt;
suma.push_back(sum);
}
for(int i=0;i<n;i++)
{
af(i);
if(inceput==true)
{
min_min=max1;
inceput=false;
}
else
{
min_min=min(min_min,max1);
}
}
fout<<min_min;
}