AtCoder-[ABC272C] Max Even
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
vector<ll>ve,vi;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int n;
cin >> n;
for (int i = 0; i < n; i++) {
ll x;
cin >> x;
if (x & 1)ve.push_back(x);
else vi.push_back(x);
}
sort(ve.begin(), ve.end());
sort(vi.begin(), vi.end());
if (ve.size() < 2 && vi.size() < 2) {
cout << -1; return 0;
}
ll M = -0x3f3f;
if (ve.size() >= 2) {
M = max(M, ve[ve.size()-1] + ve[ve.size() - 2]);
}
if (vi.size() >= 2) {
M = max(M, vi[vi.size()-1] + vi[vi.size() - 2]);
}
cout << M;
}
if (x & 1)
是一个条件语句,它的作用是判断变量 x
是否为奇数。
在C++中,&
是位运算符中的按位与操作符,对应二进制的每一位进行与操作。当一个数与 1 进行按位与操作时,如果该数的二进制表示的最后一位为1,则结果为1;否则结果为0。因此,if (x & 1)
可以判断 x 是否是奇数。
思路:通过将原数组分离为奇数数组和偶数数组人,然后比较两数组的和的最大值即可