Pagini recente » Cod sursa (job #2798037) | Cod sursa (job #1225604) | Cod sursa (job #1666220) | Cod sursa (job #1072815) | Cod sursa (job #1121577)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
long int maxim = 0, n;
long int NrTran( long int c, vector<long int> &v )
{
long int clona ;
size_t i = 0, nr = 0;
while ( i < n )
{
clona = c;
while ( clona - v[ i ] >= 0 )
clona -= v[ i++ ];
nr ++;
}
return nr;
}
long int Bsearch( long int st, long int dr, vector <long int> &v, long int k )
{
long int mid, NrT;
while ( st < dr )
{
mid = st + ( dr - st ) / 2;
NrT = NrTran ( mid, v);
if ( NrT == k )
if ( NrTran ( mid - 1, v ) == k + 1 )
return mid;
if ( NrT <= k )
dr = mid -1 ;
if ( NrT > k )
st = mid + 1;
}
cout << '\a';
}
int main()
{
ifstream f("transport.in");
long int k, aux;
vector <long int> v;
f >> n;
f >> k;
for ( size_t i = 0; i < n; i++ )
{
f >> aux;
v.push_back( aux );
if ( maxim < aux )
maxim = aux;
}
f.close();
aux = Bsearch( maxim , maxim * v.size(), v, k );
ofstream g("transport.out");
g << aux;
g.close();
return 0;
}