Pagini recente » Cod sursa (job #2482215) | Cod sursa (job #2006212) | Cod sursa (job #1982718) | Cod sursa (job #126938) | Cod sursa (job #894297)
Cod sursa(job #894297)
//#include <iostream>
#include<fstream>
//#include<math.h>
//#include<string>
//#include<stack>
//#include<windows.h>
//#include<time.h>
//#include<queue>
using namespace std;
//long long ;
//int ;
//stack <int> ;
//string ;
//struct e
//{
//}
//queue <e>;
int v[16010], n , k, camion_max, camion_min, m;
ifstream fin("transport.in");
ofstream fout("transport.out");
inline void citire()
{
fin >> n >> k;
for(int i = 1; i <= n; ++i)
{
fin >> v[i];
if(v[i] > camion_min) camion_min = v[i];
camion_max += v[i];
}
}
inline void afisare()
{
}
int main()
{
citire();
bool ok;
long long sol = 600000;
int suma = 0, contor = 0;
int q;
m = (camion_min + camion_max)/2;
while(camion_min <= camion_max)
{
for(q = 1; q<= n; ++q)
{
ok = false;
if(suma + v[q] <= m)
{
suma += v[q];
ok = true;
}
else
{
contor++;
suma = v[q];
}
}
if(suma <= m)++contor;
if(contor <= k)
{
camion_max = m - 1;
m = (camion_min + camion_max)/2;
contor = 0;
suma = 0;
}
if(contor > k)
{
camion_min = m + 1;
m = (camion_min + camion_max)/2;
contor = 0;
suma = 0;
}
if(camion_min == camion_max) sol = m;
}
fout << sol;
return 0;
}