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 some quantity or limit.
A string S of length N, consisting of characters 'L' and 'R'.
### Example Input:
```
6 1
LRLRRL
```
### Function Signature:
Write a function f(N, K, S) that takes in the input.
```python
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 write a test case generator for the given problem statement. Here is the Python code for generating test cases:
```python
import random
def tcgen():
# Generate N within the given constraints
N = random.randint(1, 10**5)
# Generate K within the given constraints
K = random.randint(1, 10**5)
# Generate string S of length N with characters 'L' and 'R'
S = ''.join(random.choice(['L', 'R']) for _ in range(N))
return N, K, S
# Example usage:
test_case = tcgen()
print(test_case)
```
This function generates random test cases for the described problem. Each test case consists of:
1. An integer \(N\) (1 ≤ \(N\) ≤ 10^5), representing the number of people in the queue.
2. An integer \(K\) (1 ≤ \(K\) ≤ 10^5), representing the maximum number of operations allowed.
3. A string \(S\) of length \(N\), where each character is either 'L' or 'R', representing the direction each person is facing.
You can call the function `tcgen()` to generate different test cases. For example, calling `tcgen()` will give you a tuple `(N, K, S)` representing a randomly generated test case.
Extract Arguments
def extract_arguments(fh):
N, K = map(int, fh.readline().strip().split())
S = fh.readline().strip()
return N, K, S