//过于神经
//别看他多,很易懂的/kk
#include <bits/stdc++.h>
using namespace std;
int a[1000001],k,ans,i,maxn=-1,f[4],lj=a[i],x,y,z,sum;
bool vis[1000001];
int main(){
while(cin>>a[++k])
;
sort(a+1,a+k);
for(i=1;i<k;i++){
if(a[i]==4||a[i]==0)continue;
else{
x=y=z=0;
for(int l=i+1;l<k;l++){
sum=a[i];
if(sum+a[l]<=4)
sum+=a[l];
f[1]=sum;
if(sum>maxn){
maxn=sum;
x=l;y=0;z=0;
}
for(int j=l+1;j<k&&a[i]<=2;j++){
sum=f[1];
if(sum+a[j]<=4)
sum+=a[j];
f[2]=sum;
if(sum>maxn){
maxn=sum;
x=l;y=j;z=0;
}
for(int r=j+1;r<k&&a[i]==1;r++){
sum=f[2];
if(sum+a[r]<=4)
sum+=a[r];
if(sum>maxn){
maxn=sum;
x=l;y=j;z=r;
}
}
}
}
if(x+y+z>0){
a[x]=a[y]=a[z]=0;
ans++;
}
}
}
cout<<i-ans-1;
return 0;
}
给点优化的思路吧/kk