codeforces 158B - Taxi
#include<stdio.h> int main() { int t,n,a[5]={0},i; scanf("%d",&n); for(i=0;i<n;i++) { scanf("%d",&t); a[t]++; } t=a[4]; while(a[3]) { if(a[1]) { a[1]--;a[3]--;t++; } else{ a[3]--;t++; } } if(a[2]%2==0) t+=(a[2]/2); else if(a[1]>1) {t+=(a[2]/2+1);a[1]-=2;} else if(a[1]==1) {t+=(a[2]/2+1);a[1]-=1;} else {t+=(a[2]/2+1);} if(a[1]%4==0) t+=(a[1]/4); else t+=(a[1]/4+1); printf("%d\n",t); return 0; }