設cAB爲在A位置上的B的數目,則答案爲:c21+c31+(c21>c12?c23+c21-c12:c32+c12-c21)。ios
/* ID:jzzlee1 PROG:sort3 LANG:C++ */ #include<iostream> #include<fstream> #include<cmath> #include<vector> #include<set> using namespace std; ifstream fin("sort3.in"); ofstream fout("sort3.out"); int main() { int n; //cin>>n; fin>>n; int i,a,ans=0; vector<int> vec; vector<int>::iterator it1; multiset<int> set1; multiset<int>::iterator it2; for(i=0;i!=n;++i) { //cin>>a; fin>>a; vec.push_back(a); set1.insert(a); } int c12=0,c13=0,c21=0,c23=0,c31=0,c32=0;//cab表示在a位置上的b的個數 for(it1=vec.begin(),it2=set1.begin();it1!=vec.end()&&it2!=set1.end();++it1,++it2) { if(*it1!=*it2) { if(*it2==1) { if(*it1==2) c12++; if(*it1==3) c13++; } if(*it2==2) { if(*it1==1) c21++; if(*it1==3) c23++; } if(*it2==3) { if(*it1==1) c31++; if(*it1==2) c32++; } } } ans=c21+c31+(c21>c12?c23+c21-c12:c32+c12-c21); //cout<<ans<<endl; fout<<ans<<endl; return 0; }