Problem p03449 - Generation 1

Orig Description

Score : 300 points
Problem StatementWe have a 2 \times N grid. We will denote the square at the i-th row and j-th column (1 \leq i \leq 2, 1 \leq j \leq N) as (i, j).
You are initially in the top-left square, (1, 1).
You will travel to the bottom-right square, (2, N), by repeatedly moving right or down.
The square (i, j) contains A_{i, j} candies.
You will collect all the candies you visit during the travel.
The top-left and bottom-right squares also contain candies, and you will also collect them.
At most how many candies can you collect when you choose the best way to travel?
Constraints
1 \leq N \leq 100
1 \leq A_{i, j} \leq 100 (1 \leq i \leq 2, 1 \leq j \leq N)
InputInput is given from Standard Input in the following format:
N
A_{1, 1} A_{1, 2} ... A_{1, N}
A_{2, 1} A_{2, 2} ... A_{2, N}
OutputPrint the maximum number of candies that can be collected.
Sample Input 15
3 2 2 4 1
1 2 2 2 1
Sample Output 114
The number of collected candies will be maximized when you:
move right three times, then move down once, then move right once.
Sample Input 24
1 1 1 1
1 1 1 1
Sample Output 25
You will always collect the same number of candies, regardless of how you travel.
Sample Input 37
3 3 4 5 4 5 3
5 3 4 4 2 3 2
Sample Output 329
Sample Input 41
2
3
Sample Output 45

Extracted Specification

Canonicalized Input Description:

An integer N (1 ≤ N ≤ 100), representing some quantity or size.
A list of integers A1 of size N, where each integer is between 1 and 100.
A list of integers A2 of size N, where each integer is between 1 and 100.

### Example Input:

```
5
3 2 2 4 1
1 2 2 2 1
```

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

Test Case Generator

Certainly! Here is the test case generator for the given problem statement:

```python
import random

def tcgen():
    # Generate a random value for N in the range [1, 100]
    N = random.randint(1, 100)
    
    # Generate the 2xN grid with random values for candies in the range [1, 100]
    A = [[random.randint(1, 100) for _ in range(N)] for _ in range(2)]
    
    return N, A

# Example usage of the test case generator
if __name__ == "__main__":
    N, A = tcgen()
    print(N)
    for row in A:
        print(' '.join(map(str, row)))
```

This generator will produce a random test case for the problem, ensuring the constraints are followed:

- `N` is between 1 and 100.
- Each element in the 2xN grid is a random integer between 1 and 100.

Here's how you can interpret the generator output:

- The first printed value is `N`, the number of columns.
- The next two lines represent the rows of the grid, where each line contains `N` integers.

You can use this generator to produce various test cases for debugging or testing your solution.

Extract Arguments

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