中文翻译:下课后,N组小学生走到外面,决定去波利卡普斯庆祝他的生日。 我们知道,第i组由Si朋友组成(1≤Si≤4),他们想一起去Polycarpus。 他们决定乘出租车去那里。 每辆车最多可载四名乘客。 如果每个小组的所有成员都乘坐同一辆出租车(但一辆出租车可以搭乘一组以上的出租车),那么孩子们需要的最小汽车数量是多少?
import sys
import math
n = int(sys.stdin.readline().strip())
nums = map(int, sys.stdin.readline().strip().split(" "))
places = {1: 0, 2: 0, 3: 0, 4: 0}
res = 0
for i in nums:
places[i] += 1
res = places[4]
if places[3] > 0:
res += places[3]
if places[1] > 0:
if places[3] >= places[1]:
places[1] = 0
else:
places[1] = places[1] - places[3]
if places[2]>0:
res+=places[2]/2
places[2]-=places[2]/2*2
if places[2]==1:
res+=1
if places[1]<=2:
places[1]=0
else:
places[1]-=2
res+=int(math.ceil(places[1]/4.0))
print res