Pagini recente » Cod sursa (job #1888199) | Cod sursa (job #561005) | Cod sursa (job #2515964)
#include <fstream>
#include <iostream>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int n,k,s[32001],MAX;
void Citire()
{ fin>>n>>k;
fin>>s[0];
MAX=s[0];
int a;
for(int i=1;i<n;i++)
{ fin>>a;
MAX=(a>MAX)?a:MAX;
s[i]=s[i-1]+a;
}
}
short test(int a)
{ int c=0,t=0;
for(int i=0;i<n;i++)
{ while(s[i]-t<a&&i<n) i++;
if(i>0)t=s[i-1];
else return 3;
c++;
if(c>k) return 3;
}
if(k>c) return 1;
cout<<"Testing "<<a<<'\n';
if(test(a-1)==3) return 2;
else return 1;
}
int CautareBinara(int st, int dr)
{ int mid;
while(st<=dr)
{ mid=(st+dr)/2;
// cout<<mid<<'\n';
// cout<<test(mid)<<"\n\n";
switch(test(mid))
{ case 1:
dr=mid-1;
break;
case 3:
st=mid+1;
break;
case 2:
return mid;
break;
}
}
cout<<"Exit";
return st;
}
int main()
{ Citire();
fout<<CautareBinara(MAX,s[n-1])<<'\n';
}