开荒
2025-06-26 22:55:08
发布于:新疆
53阅读
0回复
0点赞
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int N;
cin>>N;
vector<int>arr(N);
for (int i=0;i<N;++i) {
cin>>arr[i];
}
int count1=count(arr.begin(),arr.end(),1);
int count2=count(arr.begin(),arr.end(),2);
int count3=count(arr.begin(),arr.end(),3);
int a=0,b=0; // 区域1中的2和3的数量
for(int i=0;i<count1;++i) {
if(arr[i]==2)a++;
else if(arr[i]==3)b++;
}
int c=0,d=0; // 区域2中的1和3的数量
for(int i=count1;i<count1+count2;++i) {
if (arr[i]==1)c++;
else if (arr[i]==3)d++;
}
int e=0,f=0; // 区域3中的1和2的数量
for (int i=count1+count2;i<N;++i) {
if (arr[i]==1)e++;
else if (arr[i]==2)f++;
}
int direct_swaps=min(a,c)+min(b,e)+min(d,f);
int remaining=a-min(a,c); // 剩余的待处理错误
int total_swaps=direct_swaps+2*remaining;
cout<<total_swaps<<endl;
return 0;
}
这里空空如也
有帮助,赞一个