提交时间:2026-10-28 16:26:03

运行 ID: 43331

#include <bits/stdc++.h> using namespace std; const int N=2e5+9; int n,k,a[N],dp[N][50]; int main(){ cin>>n>>k; for(int i=1;i<=n;i++)cin>>a[i]; sort(a+1,a+n+1); for(int i=1;i<=n;i++){ for(int j=0;j<=40;j++){ int last=upper_bound(a+1,a+i+1,a[i]/2)-a-1; dp[i][j]=dp[i-1][j]+1; if(j>=1)dp[i][j]=min(dp[i][j],dp[last][j-1]); } } for(int i=0;i<=40;i++)if(dp[n][i]<=k){ cout<<i<<' '<<dp[n][i]; break; } return 0; }