Pagini recente » Cod sursa (job #2061088) | Cod sursa (job #983781) | Cod sursa (job #242388) | Cod sursa (job #2424227) | Cod sursa (job #1495880)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
int Saltele[16001];
int Sume[16001];
int Valoare[16001];
int max1;
int linf,lsup;
int N,K;
void calcMaxim(int g)
{
if(g>max1)
max1=g;
}
void cautBin()
{
int mij=(linf+lsup)/2;
int i;
int t=Sume[mij]-Sume[linf];
for(i=1;i<=mij;i++)
Valoare[i]=t;
calcMaxim(t);
t=Sume[lsup]-Sume[mij];
for(i=mij+1;i<=N;i++)
Valoare[i]=t;
calcMaxim(t);
}
int main()
{
f>>N>>K;
int i;
for(i=1;i<=N;i++)
{
f>>Saltele[i];
Sume[i]=Sume[i-1]+Saltele[i];
}
linf=1;
lsup=N;
if(K>1)
{
cautBin();
for(i=1;i<K-1;i++)
{
int j=1;
while(Valoare[j]!=max1)
j++;
linf=j;
while(Valoare[j]==max1 && j<=N)
j++;
lsup=j-1;
cautBin();
}
g<<max1;
}
f.close();
g.close();
return 0;
}