#include<iostream> #include<string.h> #include<math.h> #include<algorithm> #include<stdio.h> #include<math.h> using namespace std; int bell[1000000+100]; int n; bool kefou(int rong,int tou,int wei,int k) { int i,q,w; int ge=0; for(w=wei,i=1;;) { if(w<i)break; if(bell[w]+bell[i]<=rong) { w-=1; i+=1; ge+=1; continue; } else { w-=1; ge+=1; continue; } } if(ge<=k)return 1; return 0; } int binary(int k) { int high=0xfffffff,low=bell[n]; int midle; while(high>=low) { midle=(high+low)/2; if(kefou(midle,1,n,k)==1&&kefou(midle-1,1,n,k)==0)break; if(kefou(midle,1,n,k))high=midle-1; else low=midle+1; } return midle; } int main() { int k; while(scanf("%d%d",&n,&k)!=EOF) { int i,q,w; for(i=1;i<=n;i++) { scanf("%d",&bell[i]); } int result=binary(k); printf("%d\n",result); } return 0; }