Pagini recente » Cod sursa (job #542514) | Cod sursa (job #2153432) | Cod sursa (job #124487) | Cod sursa (job #909032) | Cod sursa (job #1525038)
# include <fstream>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
int n, k, v[16000], maxi, suma, sol;
int verifica(int cant);
int cautare(int st, int 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;
}
int verifica(int cant)
{
int i=1, aux=k;
while (i<=n)
{
int 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;
}
int cautare(int st, int dr)
{
int mid;
while (st<=dr)
{
mid=(st+dr)/2;
if (verifica(mid))
{
sol=mid;
dr=mid-1;
}
else
st=mid+1;
}
return sol;
}