Pagini recente » Cod sursa (job #1830256) | Cod sursa (job #1798724) | Cod sursa (job #2072793) | Cod sursa (job #2874016) | Cod sursa (job #1045803)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
#define maxN 16001
int n,k,sP[maxN],Smin,Smax;
void ini()
{
int i,x;
f>>n; f>>k; Smax=0;
for(i=1; i<=n ;i++)
{
f>>x; Smax+=x;
sP[i]=Smax;
}
sP[0]=0; Smin=1;
}
int evaluate(int c)
{
int i,t,rest,aux;
t=0; rest=0;
i=1;
while(i<=n && t<k)
{
aux=sP[i]-sP[i-1];
rest+=aux;
if(rest==c)
{
t++; rest=0;
i++;
}
else if(rest>c)
{
t++; rest=0;
}
else i++;
}
if(t<=k && i==n+1) return 1;
else return 0;
}
int search_min(int p, int q)
{
int mij,res;
if(p==q)
{
return p;
}
else
{
cout<<"\n "<<p<<" si "<<q<<" nu sunt egale =>";
mij=(p+q)/2;
res=evaluate(mij);
cout<<" pentru mij="<<mij<<" avem res="<<res;
if(res) search_min(p,mij);
else search_min(mij+1,q);
}
}
int main()
{
int valmin;
ini();
valmin=search_min(Smin,Smax); g<<valmin;
return 0;
}