码风清奇,用的特判得12分
#include <bits/stdc++.h>
using namespace std;
int n,ans,a[1005],num[10],s[10];
inline void r(int &n) {
char c;
int f=0;
while(!isdigit(c=getchar()))
(c=='c')&&(f=1);
for(n=c-'0';isdigit(c=getchar());n=(n<<3)+(n<<1)+c-'0');
(f)&&(n=~n+1);
}
int main() {
r(n);
for(int i=1;i<=n;i++)
{
r(a[i]);
num[a[i]]++;
}
s[1]=num[1];
s[2]=num[1]+num[2];
s[3]=num[3]+s[2];
for(int i=1;i<=n;i++){
for(int j=i;j<=n;j++){
if(a[i]==2&&i<=s[1]){
if(a[j]==1&&s[1]<j<=s[2]){
swap(a[i],a[j]);
ans++;
}
}
if(a[i]==3&&i<=s[1]){
if(a[j]==1&&s[2]<j<=s[3]){
swap(a[i],a[j]);
ans++;
}
}
if(a[i]==2&&s[2]<i<=s[3]){
if(a[j]==3&&s[1]<j<=s[2]){
swap(a[i],a[j]);
ans++;
}
}
}
}
for(int i=s[1]+1;i<=s[2];i++){
for(int j=s[2]+1;j<=s[3];j++){
for(int k=1;k<=s[1];k++){
if(a[i]==1){
if(a[j]==2){
if(a[k]==3){
swap(a[i],a[k]);
swap(a[j],a[k]);
ans+=2;
}
}
}
}
}
}
for(int i=s[2]+1;i<=s[3];i++){
for(int j=1;j<=s[1];j++){
for(int k=s[1]+1;k<=s[2];k++){
if(a[i]==1){
if(a[j]==2){
if(a[k]==3){
swap(a[i],a[k]);
swap(a[j],a[k]);
ans+=2;
}
}
}
}
}
}
cout<<ans;
return 0;
}