Problem p01968 - Generation 3

Orig Description

B: Hierarchical Calculator
Problem
Ebi-chan has N formulae: y = a_i x for i =1, ..., N (inclusive). She wants to find a subsequence of indices s with length k: s_1, s_2, ..., s_k that maximizes the final output of the procedure, x_{s_k}. If there are many candidates, she wants the shortest one. If there are still many candidates, she wants the lexicographically smallest one.
At first, let x_0 be 1 and evaluate s_1-th formula with x = x_0. Next, let x_1 be the output of s_1 and evaluate s_2-th formula with x = x_1, and so on.
Sequence s is lexicographically smaller than sequence t, if and only if either of the following conditions hold:
 there exists m < |s| such that s_i = t_i for i in 1 to m (inclusive) and s_{m+1} < t_{m+1}, or
 s_i = t_i for i in 1 to |s| (inclusive) and |s| < |t|,
where |s| is the length of the s.
Input
N
a_1 a_2 $\cdots$ a_N
Constraints
 1 \leq N \leq 60
 -2 \leq a_i \leq 2 for i=1, ...,N (inclusive)
 Every input is an integer.
Output
Output k+1 lines.  First line, the length of the sequence, k.  Following k lines, the index of the i-th element of the subsequence, s_i (one element per line).
Sample Input 1
4
2 0 -2 1
Sample Output for Input 1
1
1
Ebi-chan evaluates the first formula and gets the maximum value 2.
Sample Input 2
3
2 -2 -2
Sample Output for Input 2
3
1
2
3
Ebi-chan evaluates all the formulas and gets the maximum value 8.
Sample Input 3
2
-1 0
Sample Output for Input 3
0
Ebi-chan evaluates none of the formulas and gets the maximum value 0. The empty sequence is shorter and lexicographically smaller than any other sequences.
Sample Input 4
5
-1 2 1 -2 -1
Sample Output for Input 4
3
1
2
4
Ebi-chan evaluates $\langle$ 1, 2, 4 $\rangle$ and gets the maximum value 4. Note that $\langle$ 2, 4, 5 $\rangle$ is not lexicographically smallest one.

Extracted Specification

An integer N (1 ≤ N ≤ 60), representing some quantity or size.
A list of integers A of size N, where each integer is between -2 and 2.

### Example Input:

```
3
2 -2 -2
```

### Function Signature:
Write a function f(N, A) that takes in the input.
def f(N: int, A: List[int]):
    '''
    N: an integer
    A: a list of integers
    '''

Test Case Generator

Certainly! Given the problem statement for the hierarchical calculator, we need to create a test case generator that can produce valid input data for the problem. Here is the test case generator for the given problem:

```python
import random

def tcgen():
    N = random.randint(1, 60)  # Number of formulae
    
    # Generating N coefficients in the range [-2, 2]
    a = [random.randint(-2, 2) for _ in range(N)]
    
    return N, a

# Example of generating a test case
if __name__ == "__main__":
    N, a = tcgen()
    print(N)
    print(' '.join(map(str, a)))
```

### Explanation of the code:
1. **N Generation**:
   - `N` is generated randomly between 1 and 60, inclusive. This determines the number of formulae.
   
2. **a List Generation**:
   - A list `a` of size `N` is generated, where each element is a random integer between -2 and 2, inclusive. This represents the coefficients of the formulae.

3. **Output**:
   - The generated values of `N` and the list `a` are printed in the required format.

You can run this script to generate test cases for the problem. Each run will produce a different test case due to the use of random number generation. Here is an example of what the output might look like for a single run:

```
5
-1 2 0 -2 1
```

This represents:
- 5 formulae.
- The coefficients of the formulae are -1, 2, 0, -2, and 1, respectively.

Extract Arguments

def extract_arguments(fh):
    N = int(fh.readline().strip())
    A = list(map(int, fh.readline().strip().split()))
    return N, A