/*
ID: cm750621
PROG: sort3
LANG: C++
*/
#include <cstdio>
#include <cstdlib>
int a[10],v[10000],ans=0;
void swap(int &a,int &b){
int t=a;
a=b;
b=t;
}
int main(){
freopen("sort3.in","r",stdin);
freopen("sort3.out","w",stdout);
int i,j,k,m,n;
scanf("%d",&n);
for(i=1;i<=n;i++){
scanf("%d",&v[i]);
a[v[i]]++;
}
for(i=1;i<=a[1];i++){
if(v[i]==2)
for(j=a[1]+1;j<=a[1]+a[2];j++)
if(v[j]==1){
swap(v[i],v[j]);
ans++;
break;
}
if(v[i]==3)
for(j=a[1]+a[2]+1;j<=n;j++)
if(v[j]==1){
swap(v[i],v[j]);
ans++;
break;
}
}
for(i=a[1]+1;i<=a[1]+a[2];i++){
if(v[i]==3)
for(j=a[1]+a[2]+1;j<=n;j++)
if(v[j]==2){
swap(v[i],v[j]);
ans++;
break;
}
}
for(i=1;i<=a[1];i++){
if (v[i]!=1){
for(j=a[1]+a[2];j>i;j--){
if(v[j]!=v[i])
for(k=n;k>j;k--){
if(v[k]!=v[i]&&v[k]!=v[j]){
v[i]=1;
v[j]=2;
v[k]=3;
ans+=2;
goto lable1;
}
}
}
lable1: ; //此处为咨询百度后使用
}
}
printf("%d\n",ans);
return 0;
}
usaco 2.1.3 sort3
最新推荐文章于 2016-12-05 18:58:36 发布