Pagini recente » Cod sursa (job #1617554) | Cod sursa (job #1295884) | Cod sursa (job #2215056) | Cod sursa (job #1532828) | Cod sursa (job #1525046)
# include <fstream>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
int n, k, v[16000], maxi;
long long suma, sol;
bool verifica(long long cant);
long long cautare(long long st, long long dr);
int main()
{
int i;
f>>n>>k;
for (i=1; i<=n; i++)
{
f>>v[i];
if (v[i]>maxi)
maxi=v[i];
suma+=v[i];
}
if (verifica(maxi))
g<<maxi;
else
g<<cautare(maxi+1, suma);
return 0;
}
bool verifica(long long cant)
{
int i=1, aux=k;
while (i<=n)
{
long suma_part=0;
while (suma_part+v[i]<=cant && i<=n)
{
suma_part+=v[i];
i++;
}
aux--;
}
if (aux>=0)
return 1;
else
return 0;
}
long long cautare(long long st, long long dr)
{
int mid;
while (st<=dr)
{
mid=(st+dr)/2;
if (verifica(mid))
{
sol=mid;
dr=mid-1;
}
else
st=mid+1;
}
return sol;
}