Maximum splitting (Codeforces 871A)
Tags: Greedy, number theory

You are given several queries. In the i-th query you are given a single positive integer ni. You are to represent ni as a sum of maximum possible number of composite summands and print this maximum number, or print -1, if there are no such splittings.An integer greater than 1 is composite, if it is not prime, i.e. if it has positive divisors not equal to 1 and the integer itself.

Input: The first line contains single integer q (1 ≤ q ≤ 105) — the number of queries.q lines follow. The (i + 1)-th line contains single integer ni (1 ≤ ni ≤ 109) — the i-th query.

Output: For each query print the maximum possible number of summands in a valid splitting to composite summands, or -1, if there are no such splittings.

Note: 12 = 4 + 4 + 4 = 4 + 8 = 6 + 6 = 12, but the first splitting has the maximum possible number of summands.8 = 4 + 4, 6 can't be split into several composite summands.1, 2, 3 are less than any composite number, so they do not have valid splittings.

Sample Inputs:
1
12

2
6
8

3
1
2
3

Sample Outputs:
3

1
2

-1
-1
-1

Solution (Python):
n = int(input())
num = []
ans = []
m = n
while m > 0:
    num.append(int(input()))
    m = m - 1
for x in num:
    tmp = x % 4
    div = x // 4
    if tmp == 0:
        ans.append(div)
    elif tmp == 1:
        if div >= 2:
            ans.append(div - 1)
        else:
            ans.append(-1)
    elif tmp == 2:
        if div >= 1:
            ans.append(div)
        else:
            ans.append(-1)
    elif tmp == 3:
        if div >= 3:
            ans.append(div - 1)
        else:
            ans.append(-1)
for x in ans:
    print(x)

Solution (Python):
t = int(input())
for i in range(t):
    n = int(input())
    if n in [1, 2, 3, 5, 7, 11]:
        print(-1)
    else:
        print(n // 4 - n % 2)

Solution (Python):
t = int(input())
for i in range(t):
    n = int(input())
    if n in [1, 2, 3, 5, 7, 11]:
        print(-1)
    elif n % 4 == 0:
        print(n // 4)
    elif n % 4 == 1:
        print((n - 9) // 4 + 1)
    elif n % 4 == 2:
        print((n - 6) // 4 + 1)
    elif n % 4 == 3:
        print((n - 15) // 4 + 2)