USACO2.1 Sorting a Three-Valued Sequence (sort3)
1160 ワード
cABをA位置のBの数とすると、c 21+c 31+(c 21>c 12?c 23+c 21-c 12:c 32+c 12-c 21)となる.
/*
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;
}