Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <minmax.h>
- using namespace std;
- int t, k, a;
- int gr[4] = { 0, 0, 0, 0 };
- void main()
- {
- cin >> t;
- while (t--) {
- int v;
- cin >> v;
- gr[v - 1]++;
- }
- // [4 места в такси]
- // 4
- k += gr[3];
- gr[3] = 0;
- // 3 1
- a = min(gr[2], gr[0]);
- k += a;
- gr[2] -= a;
- gr[0] -= a;
- // 2 2
- a = (int)(gr[1] / 2);
- k += a;
- gr[1] -= 2 * a;
- // 2 1 1
- a = min(gr[1], (int)(gr[0] / 2));
- k += a;
- gr[1] -= a;
- gr[0] -= 2 * a;
- // 1 1 1 1
- a = (int)(gr[0] / 4);
- k += a;
- gr[0] -= 4 * a;
- // [3 места в такси]
- // 3
- k += gr[2];
- gr[2] = 0;
- // 2 1
- a = min(gr[1], gr[0]);
- k += a;
- gr[1] -= a;
- gr[0] -= a;
- // 1 1 1
- a = (int)(gr[0] / 3);
- k += a;
- gr[0] -= 3 * a;
- // [2 места в такси]
- // 2
- k += gr[1];
- gr[1] = 0;
- // 1 1
- a += (int)(gr[0] / 2);
- k += a;
- gr[0] -= 2 * a;
- // [1 место в такси]
- // 1
- k += gr[0];
- gr[0] = 0;
- cout << k;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement