Problem p02918 - Generation 1

Orig Description

Score : 400 points
Problem StatementThere are N people standing in a queue from west to east.
Given is a string S of length N representing the directions of the people.
The i-th person from the west is facing west if the i-th character of S is L, and east if that character of S is R.
A person is happy if the person in front of him/her is facing the same direction.
If no person is standing in front of a person, however, he/she is not happy.
You can perform the following operation any number of times between 0 and K (inclusive):
Operation: Choose integers l and r such that 1 \leq l \leq r \leq N, and rotate by 180 degrees the part of the queue: the l-th, (l+1)-th, ..., r-th persons. That is, for each i = 0, 1, ..., r-l, the (l + i)-th person from the west will stand the (r - i)-th from the west after the operation, facing east if he/she is facing west now, and vice versa.
What is the maximum possible number of happy people you can have?
Constraints
N is an integer satisfying 1 \leq N \leq 10^5.
K is an integer satisfying 1 \leq K \leq 10^5.
|S| = N
Each character of S is L or R.
InputInput is given from Standard Input in the following format:
N K
S
OutputPrint the maximum possible number of happy people after at most K operations.
Sample Input 16 1
LRLRRL
Sample Output 13
If we choose (l, r) = (2, 5), we have LLLRLL, where the 2-nd, 3-rd, and 6-th persons from the west are happy.
Sample Input 213 3
LRRLRLRRLRLLR
Sample Output 29
Sample Input 310 1
LLLLLRRRRR
Sample Output 39
Sample Input 49 2
RRRLRLRLL
Sample Output 47

Extracted Specification

An integer N (1 ≤ N ≤ 10^5), representing some quantity or size.
An integer K (1 ≤ K ≤ 10^5), representing another quantity or size.
A string S of length N, consisting solely of characters 'L' and 'R'.

### Example Input:

```
6 1
LRLRRL
```

### Function Signature:
Write a function f(N, K, S) that takes in the input.
def f(N: int, K: int, S: str):
    '''
    N: an integer
    K: an integer
    S: a string
    '''

Test Case Generator

Sure, I can help you with that. Here is a test case generator for the given problem statement:

```python
import random

def generate_test_case():
    # Generate N and K
    N = random.randint(1, 10**5)
    K = random.randint(1, 10**5)
    
    # Generate the string S with characters 'L' and 'R'
    S = ''.join(random.choice(['L', 'R']) for _ in range(N))
    
    return N, K, S

# Example usage
if __name__ == "__main__":
    N, K, S = generate_test_case()
    print(N)
    print(K)
    print(S)
```

### Explanation:

1. **Generate N and K**: Both `N` and `K` are generated randomly within the given constraints (1 ≤ N ≤ 10^5 and 1 ≤ K ≤ 10^5).
2. **Generate String S**: The string `S` of length `N` is generated by randomly choosing characters from 'L' and 'R'.
3. **Output the Test Case**: The generated values of `N`, `K`, and the string `S` are printed.

You can run this script to generate random test cases for the problem. Each time you run it, it will produce a different test case within the specified constraints.

Extract Arguments

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