#11676. 珅泽教育CSP-J第一轮模拟考第十六套 第 39 题
珅泽教育CSP-J第一轮模拟考第十六套 第 39 题
三、完善程序(单选题,每小题3分,共计30分)
第1题
给定 个整数 ,每个数字都是 中的一个。可以不断交换这个序列中的任意两个数字,目标是让这个序列成为升序,请问最少需要几次交换?
#include<iostream>
int a[1000005], c[3] = {0}, q[3][3] = {0}, sum;
void cal(int u, int v)
{
int pair = std::min(____(1)____);
sum += pair;
q[u][v] -= pair;
q[v][u] -= pair;
}
int main()
{
int n;
std::cin >> n;
for (int i = 0; i < n; ++i) {
std::cin >> a[i];
____(2)____;
}
for (int i = 0; i < n; ++i) {
int from = ____(3)____;
int to = 0;
if (i >= c[0]) to++;
____(4)____ to++;
q[from][to]++;
}
cal(0, 1);
cal(0, 2);
cal(1, 2);
sum += 2 * (____(5)____);
std::cout << sum << "\n";
}
(4)处应填( )。
{{ select(1) }}
if (i >= c[1])else if (i >= c[1])if (i >= c[0] + c[1])else if (i >= c[0] + c[1])