Orig Description
Score : 600 points
Problem StatementA tetromino is a figure formed by joining four squares edge to edge.
We will refer to the following seven kinds of tetromino as I-, O-, T-, J-, L-, S- and Z-tetrominos, respectively:
Snuke has many tetrominos. The number of I-, O-, T-, J-, L-, S- and Z-tetrominos in his possession are a_I, a_O, a_T, a_J, a_L, a_S and a_Z, respectively.
Snuke will join K of his tetrominos to form a rectangle that is two squares tall and 2K squares wide.
Here, the following rules must be followed:
When placing each tetromino, rotation is allowed, but reflection is not.
Each square in the rectangle must be covered by exactly one tetromino.
No part of each tetromino may be outside the rectangle.
Snuke wants to form as large a rectangle as possible.
Find the maximum possible value of K.
Constraints
0≤a_I,a_O,a_T,a_J,a_L,a_S,a_Z≤10^9
a_I+a_O+a_T+a_J+a_L+a_S+a_Z≥1
InputThe input is given from Standard Input in the following format:
a_I a_O a_T a_J a_L a_S a_Z
OutputPrint the maximum possible value of K. If no rectangle can be formed, print 0.
Sample Input 12 1 1 0 0 0 0
Sample Output 13
One possible way to form the largest rectangle is shown in the following figure:
Sample Input 20 0 10 0 0 0 0
Sample Output 20
No rectangle can be formed.
Extracted Specification
Canonicalized Input Description:
A list of 7 integers, where each integer is between 0 and 1e9. The sum of the integers must be at least 1.
### Example Input:
```
12 1 1 0 0 0 0
```
### Function Signature:
Write a function f(inputs) that takes in the input.
def f(inputs: List[int]):
'''
inputs: a list of 7 integers
'''
Test Case Generator
Sure, I can help you write a test case generator for the given problem statement. Let's break down the constraints and generate test cases accordingly.
Here is the test case generator function in Python:
```python
import random
def tcgen():
# Generate random counts for each type of tetromino
a_I = random.randint(0, 10**9)
a_O = random.randint(0, 10**9)
a_T = random.randint(0, 10**9)
a_J = random.randint(0, 10**9)
a_L = random.randint(0, 10**9)
a_S = random.randint(0, 10**9)
a_Z = random.randint(0, 10**9)
# Ensure that the sum of all tetrominos is at least 1
while a_I + a_O + a_T + a_J + a_L + a_S + a_Z == 0:
a_I = random.randint(0, 10**9)
a_O = random.randint(0, 10**9)
a_T = random.randint(0, 10**9)
a_J = random.randint(0, 10**9)
a_L = random.randint(0, 10**9)
a_S = random.randint(0, 10**9)
a_Z = random.randint(0, 10**9)
return a_I, a_O, a_T, a_J, a_L, a_S, a_Z
# Example usage
test_case = tcgen()
print(test_case) # Prints a randomly generated test case
```
### Explanation
1. **Random Tetromino Counts**: We generate random integers for each type of tetromino within the given range [0, 10^9].
2. **Ensure Non-zero Sum**: We ensure that the sum of all tetrominos is at least 1, as per the constraint \(a_I + a_O + a_T + a_J + a_L + a_S + a_Z \geq 1\).
3. **Output**: The function returns a tuple containing the counts of each type of tetromino.
### Example Usage
To generate and print a test case, you can call the `tcgen()` function and print the result. This will give you a random test case that adheres to the problem constraints. You can use this function to generate multiple test cases for testing purposes.
Extract Arguments
def extract_arguments(fh):
a_I, a_O, a_T, a_J, a_L, a_S, a_Z = map(int, fh.readline().strip().split())
return a_I, a_O, a_T, a_J, a_L, a_S, a_Z
# if __name__ == "__main__":
# input_path = sys.argv[1]
# with open(input_path, 'r') as fh:
# a_I, a_O, a_T, a_J, a_L, a_S, a_Z = extract_arguments(fh)
# f(a_I, a_O, a_T, a_J, a_L, a_S, a_Z)