CF356C.Compartments
提高+/省选-
通过率:0%
时间限制:1.00s
内存限制:256MB
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
A team of students from the city S is sent to the All-Berland Olympiad in Informatics. Traditionally, they go on the train. All students have bought tickets in one carriage, consisting of n compartments (each compartment has exactly four people). We know that if one compartment contain one or two students, then they get bored, and if one compartment contain three or four students, then the compartment has fun throughout the entire trip.
The students want to swap with other people, so that no compartment with students had bored students. To swap places with another person, you need to convince him that it is really necessary. The students can not independently find the necessary arguments, so they asked a sympathetic conductor for help. The conductor can use her life experience to persuade any passenger to switch places with some student.
However, the conductor does not want to waste time persuading the wrong people, so she wants to know what is the minimum number of people necessary to persuade her to change places with the students. Your task is to find the number.
After all the swaps each compartment should either have no student left, or have a company of three or four students.
一支来自城市 S 的学生队伍将前往全贝尔兰信息学奥林匹克竞赛。按照传统,他们乘坐火车前往。所有学生都购买了同一节车厢的车票,该车厢共有 n 个隔间(每个隔间恰好可容纳四人)。已知:若一个隔间中仅有 1 名或 2 名学生,则他们会感到无聊;而若一个隔间中有 3 名或 4 名学生,则整个旅途中该隔间都充满欢乐。
学生们希望与其他乘客交换座位,使得任何含有学生的隔间都不再出现无聊的学生。要与另一名乘客交换座位,必须说服他这样做确实有必要。但学生们无法独立找到足够的说服理由,于是向一位富有同情心的列车员求助。这位列车员可以凭借丰富的人生经验,说服任意一名乘客与某位学生交换座位。
然而,列车员不愿浪费时间去说服不合适的人,因此她想知道:为达成目标,最少需要说服多少名乘客与学生交换座位?你的任务就是求出这个最小人数。
在完成所有交换后,每个隔间应满足以下条件之一:
- 完全没有学生;
- 恰好有 3 名或 4 名学生。
输入格式
The first line contains integer n (1 ≤ n ≤ 106) — the number of compartments in the carriage. The second line contains n integers _a_1, _a_2, ..., a__n showing how many students ride in each compartment (0 ≤ a__i ≤ 4). It is guaranteed that at least one student is riding in the train.
第一行包含一个整数 n(1≤n≤106)—— 表示车厢中的隔间数量。
第二行包含 n 个整数 a1,a2,…,an,表示每个隔间中乘坐的学生人数(0≤ai≤4)。
保证至少有一名学生乘坐该列车。
输出格式
If no sequence of swapping seats with other people leads to the desired result, print number "-1" (without the quotes). In another case, print the smallest number of people you need to persuade to swap places.
如果不存在通过与其他乘客交换座位来达到目标结果的序列,则输出数字“-1”(不带引号)。否则,输出需要说服其交换座位的最少人数。
输入输出样例
输入#1
5 1 2 2 4 3
输出#1
2
输入#2
3 4 1 1
输出#2
2
输入#3
4 0 3 0 4
输出#3
0
输入解题思路,AI测评打分。不知道怎么写?