本蒟蒻已经卡1小时了,这普及-快被做成省选了,(雾
#7
in:100 3 2 2 3 1 2 2 2 1 2 2 3 2 3 2 2 3 3 2 2 2 3 3 3 3 2 2 1 2 2 1 1 1 3 1 1 2 2 3 3 1 1 2 2 1 1 3 1 3 1 3 2 1 2 1 3 3 3 1 2 1 1 2 1 3 2 2 1 1 1 3 1 2 2 3 3 2 3 3 2 1 2 3 1 3 1 1 3 3 1 1 1 1 3 1 1 2 3 1 2
out:37
#include<iostream>
#include<algorithm>
using namespace std;
int n,a[10001],b[10001],c[10001],jishu;
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
b[i]=a[i];
}
sort(b+1,b+1+n);
int i=0;
bool flag1=0;
while(!flag1)
{
flag1=1;
for(int j=1;j<=n;j++)
{
if(a[j]!=b[j])
{
flag1=0;
break;
}
}
i++;
if(i>n)i=1;
bool flag=false;
if(a[i]!=b[i])
{
for(int j=1;j<=n;j++)
{
if(a[j]!=b[j]&&i!=j&&a[j]==b[i]&&a[i]==b[j])
{
swap(a[i],a[j]);
jishu++;
flag=true;
break;
}
}
if(!flag)
{
for(int j=1;j<=n;j++)
{
if(a[j]!=b[j]&&i!=j&&a[j]!=a[i])
{
for(int k=j+1;k<=n;k++)
{
if(a[k]!=b[k]&&i!=k&&k!=j&&a[j]!=a[k]&&a[k]!=a[i])
{
int tmp,tmp1,tmp2,tmp3,tmp4;
tmp=min(i,j);
tmp=min(tmp,k);
a[tmp]=1;
tmp1=tmp;
tmp2=max(i,j);
tmp2=max(tmp2,k);
a[tmp2]=3;
a[i+k+j-tmp-tmp2]=2;
jishu+=2;
break;
}
}
break;
}
}
}
}
}
cout<<jishu;
return 0;
}