Pagini recente » Cod sursa (job #1798935) | Cod sursa (job #1284971) | Cod sursa (job #1723539) | Cod sursa (job #198532) | Cod sursa (job #2633032)
#include <bits/stdc++.h>
using namespace std;
/***********************************************/
ifstream f("transport.in");
ofstream g("transport.out");
/***********************************************/
const int nmax = 16069;
int n , k;
int v[nmax];
int maxt , rasp;
/***********************************************/
///-----------------------------------------------------------
inline void readInput()
{
f>>n>>k;
for(int i=1 ; i<=n; ++i)
{
f>>v[i];
if(maxt < v[i]) maxt = v[i];
}
}
///-----------------------------------------------------------
bool verificare(int cont )
{
int kc = 0;
int s = 0;
for(int i = 1;i<= n; i++)
{
if(s+v[i]<= cont) s+=v[i];
else{
kc++;
s=v[i];
}
if(kc==k ) return false;
}
return true;
}
///-----------------------------------------------------------
void cautareBinara(int st , int dr )
{
while(dr >= st)
{
int mij = st + (dr-st)/2;
if(verificare(mij) == true)
{
rasp = mij;
dr = mij - 1;
}
else
{
st = mij + 1;
}
}
return;
}
///-----------------------------------------------------------
inline void Solution()
{
cautareBinara(maxt , 16000 * 16000);
}
///-----------------------------------------------------------
inline void Afisare()
{
g<<rasp;
}
///-----------------------------------------------------------
int main()
{
readInput();
Solution();
Afisare();
return 0;
}