Solution
2024-08-16 18:59:46
发布于:广东
5阅读
0回复
0点赞
#include <iostream>
#include <vector>
#include <cstdio>
#include <algorithm>
using namespace std;
int main() {
int N; cin >> N;
vector<bool> used(2 * N);
vector<int> A(N);
for (int i = 0; i < N; i++) {
cin >> A[i];
A[i]--;
used[A[i]] = true;
}
sort(A.begin(), A.begin() + N / 2);
sort(A.begin() + N / 2, A.end());
rotate(A.begin(), A.begin() + N / 2, A.end());
vector<int> B;
for (int i = 0; i < 2 * N; i++) {
if (!used[i]) {
B.push_back(i);
}
}
int res = 0;
for (int i = N / 2, j = N / 2; i < N; i++, j++, res++) {
while (j < N && B[j] < A[i]) {
j++;
}
if (j == N) {
break;
}
}
for (int i = N / 2 - 1, j = N / 2 - 1; i >= 0; i--, j--, res++) {
while (j >= 0 && B[j] > A[i]) {
j--;
}
if (j == -1) {
break;
}
}
cout << res << endl;
return 0;
}
这里空空如也
有帮助,赞一个