思路:贪心。如果有些盒子装一个,那就只装最大的那几个。然后剩下的最大的和最小的合在一起装一个盒子,第二大和第二小的合在一起。。。。。。以此类推。
记录最大的盒子容量。
代码:
#include<bits/stdc++.h> using namespace std; #define ll long long const int N=1e5+5; int s[N]; int main() { ios::sync_with_stdio(false); cin.tie(0); int n,k; cin>>n>>k; for(int i=0;i<n;i++) { cin>>s[i]; } int d=k*2-n; int ans=0; for(int i=n-1;i>=n-d&&i>=0;i--)ans=max(ans,s[i]); n=n-d; if(n>=0)for(int i=0;i<n;i++) { ans=max(ans,s[i]+s[n-i-1]); } cout<<ans<<endl; return 0; }