Pagini recente » Cod sursa (job #2400550) | Cod sursa (job #1030718) | Cod sursa (job #1520359) | Cod sursa (job #541192) | Cod sursa (job #1034653)
#include<iostream>
#include<fstream>
#include<climits>
using namespace std;
ifstream fin("saltele.in");
ofstream fout("saltele.out");
bool test(long long capacitate,unsigned short saltele[], unsigned short N, unsigned short K){
unsigned short i;
int s=0,transporturi=0;
for(i=0;i<N;i++){
if(s+saltele[i] <= capacitate) s+=saltele[i];
else{
s=saltele[i];
transporturi++;
}
if(saltele[i]>capacitate) return 0;
}
if(s) transporturi ++;
return transporturi<=K && transporturi;
}
int main(){
unsigned short saltele[16000],N,K; //32kb
long long s=0;
int i;
fin>>N>>K;
for(i=0;i<N;i++){
fin>>saltele[i];
s+=saltele[i];
}
i=0;
while(test(s,saltele,N,K))
s-=saltele[i++];
s+=saltele[i-1];
fout<<s<<endl;
return 0;
}