Orig Description
Score : 700 points
Problem StatementYou are given sequences A and B consisting of non-negative integers.
The lengths of both A and B are N, and the sums of the elements in A and B are equal.
The i-th element in A is A_i, and the i-th element in B is B_i.
Tozan and Gezan repeats the following sequence of operations:
If A and B are equal sequences, terminate the process.
Otherwise, first Tozan chooses a positive element in A and decrease it by 1.
Then, Gezan chooses a positive element in B and decrease it by 1.
Then, give one candy to Takahashi, their pet.
Tozan wants the number of candies given to Takahashi until the process is terminated to be as large as possible, while Gezan wants it to be as small as possible.
Find the number of candies given to Takahashi when both of them perform the operations optimally.
Constraints
1 \leq N \leq 2 × 10^5
0 \leq A_i,B_i \leq 10^9(1\leq i\leq N)
The sums of the elements in A and B are equal.
All values in input are integers.
InputInput is given from Standard Input in the following format:
N
A_1 B_1
:
A_N B_N
OutputPrint the number of candies given to Takahashi when both Tozan and Gezan perform the operations optimally.
Sample Input 12
1 2
3 2
Sample Output 12
When both Tozan and Gezan perform the operations optimally, the process will proceed as follows:
Tozan decreases A_1 by 1.
Gezan decreases B_1 by 1.
One candy is given to Takahashi.
Tozan decreases A_2 by 1.
Gezan decreases B_1 by 1.
One candy is given to Takahashi.
As A and B are equal, the process is terminated.
Sample Input 23
8 3
0 1
4 8
Sample Output 29
Sample Input 31
1 1
Sample Output 30
Extracted Specification
Canonicalized Input Description:
An integer N (1 ≤ N ≤ 2 × 10^5), representing some quantity or size.
A list of N tuples, each containing two integers (X, Y), where each integer is between 0 and 10^9.
### Example Input:
```
2
1 2
3 2
```
### Function Signature:
Write a function f(inputs) that takes in the input.
def f(inputs: List[Tuple[int, int]]):
'''
inputs: a list of tuples, each containing two integers
'''
Test Case Generator
Sure! Here is a test case generator for the given problem:
```python
import random
def tcgen():
# Generate a random integer N in the range 1 to 2 × 10^5
N = random.randint(1, 2 * 10**5)
# Initialize lists A and B
A = []
B = []
# Generate a random sum S for both lists (let's keep S small for simplicity)
S = random.randint(1, N * 10)
# Distribute the sum S across N elements for both A and B
for _ in range(N):
if _ == N - 1: # For the last element, just add the remaining sum to ensure the total sum is S
A.append(S)
B.append(S)
else:
a_i = random.randint(0, S)
b_i = random.randint(0, S)
A.append(a_i)
B.append(b_i)
S -= a_i
S -= b_i
# Adjust the last element to ensure the sums of A and B are equal
A[-1] += S
B[-1] += S
return N, A, B
# Example usage
N, A, B = tcgen()
print(N)
for a, b in zip(A, B):
print(a, b)
```
This code generates random test cases for the problem with the following constraints:
1. \( N \) is a random integer between 1 and 200,000.
2. Sequences \( A \) and \( B \) are both of length \( N \) and their sums are equal.
3. Each element \( A[i] \) and \( B[i] \) is a non-negative integer, and their sums match the total sum \( S \).
The generated test case ensures that the conditions specified in the problem statement are met. You can run the generator multiple times to get different random test cases.
Extract Arguments
def extract_arguments(fh):
N = int(fh.readline().strip())
A = []
B = []
for _ in range(N):
a, b = map(int, fh.readline().strip().split())
A.append(a)
B.append(b)
return N, A, B
# if __name__ == "__main__":
# input_path = sys.argv[1]
# with open(input_path, 'r') as fh:
# N, A, B = extract_arguments(fh)
# f(N, A, B)