#include<iostream>
#include<stdio.h>
#include<algorithm>
using namespace std;
typedef long long ll;
int a[21000];
int n,k;
bool check(ll t){
ll cnt=0,num=0;
for(int i=0;i<n;i++){
ll tmp=((t+a[i])/a[i]/2);
if(tmp>0){
num=num+tmp*4+1;
cnt++;
}
if(cnt==k) break;
}
if(num>=n) return true;
else return false;
}
int main(){
scanf("%d %d",&n,&k);
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
}
sort(a,a+n);
ll l=1,r=2e10+10;
while(l<r){
ll mid=(l+r)>>1;
if(check(mid)) r=mid;
else l=mid+1;
}
printf("%lld\n",l);
}
迷之现象——二分的mid,声明为ll就过了,声明为int就超时