Pagini recente » Cod sursa (job #2665971) | Istoria paginii runda/drumarb2/clasament | Clasament ghdhgdsashgsthdr | Clasament simulare_olimpiada_clasele_11_12 | Cod sursa (job #1033889)
#include <iostream>
#include <fstream>
using namespace std;
int v[16000];
ifstream f("transport.in");
ofstream g("transport.out");
int nr_drumuri(int n,int c)
{
int drum=0,i=1;
long s=0;
while(i<n)
{
s=0;
while(s<=c && i<=n)
s=s+v[i++];
drum++;
i--;
}
return drum;
}
int main()
{
int n,k,i,cmin=1;
long long cmax=0,c,s,st,dr,m,min;
f>>n;
f>>k;
cout<<endl;
for(i=1;i<=n;i++)
f>>v[i];
for(i=1;i<=n;i++)
{
cmax+=v[i];
if(v[i]>cmin)
cmin=v[i];
}
st=cmin;
dr=cmax;
while (st!=dr)
{
m=(st+dr)/2;
if(nr_drumuri(n,m)==k)
c=m;
if(nr_drumuri(n,m)<k)
dr=m;
else
st=m+1;
}
min=cmin;
i=1;
while(i<n)
{
s=0;
while(s<=c && i<=n)
s=s+v[i++];
i--;
s=s-v[i];
if(s>min)
min=s;
}
g<<min;
f.close();
g.close();
return 0;
}