| 记录编号 | 134934 | 评测结果 | AAAAAAAA | 
    
        | 题目名称 | 672.三值的排序 | 最终得分 | 100 | 
    
        | 用户昵称 |  乌龙猹 | 是否通过 | 通过 | 
    
        | 代码语言 | C++ | 运行时间 | 0.002 s | 
    
        | 提交时间 | 2014-10-31 07:48:12 | 内存使用 | 0.29 MiB | 
    
    
    
    		显示代码纯文本
		
		#include<cstdio>
#include<cctype>
using namespace std;
int ret;
char ch;
int qin()
{
    ret=0;
    while(ch=getchar(),!isdigit(ch));
    while(ret=ret*10+ch-'0',ch=getchar(),isdigit(ch));
    return ret;
}
int n;
int a[1001];
int w[4][4];//x在j区间出现次数;
int sum[4];//x出现次数;
int min(int a,int b){return a<b?a:b;}
int main()
{
    freopen("sort3.in","r",stdin);
    freopen("sort3.out","w",stdout);
	n=qin();
	for(int i=1;i<=n;i++)
	{
		int x;
		x=qin();
		a[i]=x;
		sum[x]++;
	}
	
	for(int i=1;i<=sum[1];i++)	w[a[i]][1]++;
	for(int i=sum[1]+1;i<=sum[1]+sum[2];i++) w[a[i]][2]++;
	for(int i=sum[1]+sum[2]+1;i<=n;i++) w[a[i]][3]++;
	
	int S=w[1][2]+w[2][1]+w[1][3]+w[3][1]+w[2][3]+w[3][2];
	int A=min(w[1][2],w[2][1])+min(w[1][3],w[3][1])+min(w[2][3],w[3][2]);
	int B=((S-2*A)/3)*2;
	printf("%d\n",A+B);
    //while(1);
    fclose(stdin);
    fclose(stdout);
    return 0;
}