思路:

要先搞懂实际能坐的有几个座位。稍微用脑子想一想即可知道一共有 $\left \lfloor \frac{n+1}{2} \right \rfloor$ 个座位。剩下的就好办了。

先将他们的快乐值排序,然后在有限的空间里将比较大的且大于零的加进来即可。

注意:

很喜欢 OIer 们的一句话:十年 OI 一场空,不开 long long 见祖宗。

AC 代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include<bits/stdc++.h>
using namespace std;
long long n;
long long a[11451419],c;
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
sort(a+1,a+n+1);
for(int i=n;i>n/2;i--){
if(a[i]<=0){
break;
}
c+=a[i];
}
cout<<c;
return 0;
}