Chia hết cho 3

View as PDF

Points: 1500 Time limit: 1.0s Memory limit: 256M Input: stdin Output: stdout

Bạn được cho một mảng \(a\) gồm \(n\) (\(n\) chia hết cho \(3\)) phần tử. Bạn được thực hiện vô số thao tác sau: tăng hoặc giảm \(1\) phần tử bất kỳ lên hoặc xuống \(1\) đơn vị. Gọi \(c_{0}, c_{1}\)\(c_{2}\) lần lượt là số lượng các phần tử trong mảng \(a\) khi chia lấy dư cho 3 có số dư bằng \(0, 1\)\(2\). Một mảng được gọi là cân đối khi \(c_{0} = c_{1} = c_{2}\).

Yêu cầu: bạn hãy tìm cách cân đối mảng \(a\) ban đầu bằng cách thực hiện \(0\) hoặc nhiều thao tác và in ra số thao tác ít nhất để cân đối mảng \(a\).

Input

  • Dòng thứ nhất chứa hai số nguyên dương \(n\) \((1 \leq n \leq 5 \times 10^{5}, n \mod 3 = 0)\).
  • Dòng thứ hai chứa \(n\) số nguyên \(a_{1}, a_{2}, \ldots, a_{n}\) \((0 \leq a_{i} \leq 10^{9})\).

Output

  • Gồm một dòng duy nhất chứa một số nguyên là số thao tác ít nhất để cân đối mảng.

Scoring

  • Subtask \(1\) (\(10\%\) số điểm): \(n = 3\).
  • Subtask \(2\) (\(40\%\) số điểm): \(a_{i} \leq 2\).
  • Subtask \(3\) (\(50\%\) số điểm): không có ràng buộc gì thêm.

Example

Test 1

Input
6
5 3 8 9 11 34
Output
1
Note

Ta giảm phần tử đầu tiên đi một đơn vị, khi đó dãy sẽ trở thành \(4, 3, 8, 9, 11, 34\)


Comments

There are no comments at the moment.