Pagini recente » Cod sursa (job #1324081) | Cod sursa (job #3164681) | Cod sursa (job #2416836) | Cod sursa (job #3185016) | Cod sursa (job #1622402)
#include <bits/stdc++.h>
using namespace std;
int a[16005],n,k;
void Citire()
{
int i;
ifstream fin ("transport.in");
fin >> n >> k;
for(i=1; i<=n; i++)
fin >> a[i];
fin.close();
}
///Returneaza 1 daca sirur se poate imparti
/// in cel mult k secvente de suma L
int Imparte(int L)
{
int i, suma = 0,secv=1;
for(i=1; i<=n; i++)
{
if(a[i]>L)return 0;
suma+=a[i];
if(suma > L)
{
secv++;
suma = a[i];
}
}
if(secv<=k)return 1;
return 0;
}
int CautBin()
{
int st, dr, m, poz;
st = 1; dr = 256000000; poz = 0;
while (st <= dr)
{
m = (st + dr) / 2;
if (Imparte(m)==1)
{
poz = m;
dr = m - 1;
}
else st = m + 1;
}
return poz;
}
int main()
{
int x;
ofstream fout("transport.out");
Citire();
x=CautBin();
fout << x << "\n";
fout.close();
return 0;
}