奶牛 Bessie 躲在数轴上的某处。

农夫约翰的 谎牛计数(春季每日一题 53)_#define 头奶牛中的每头奶牛都有一条信息要分享:第 谎牛计数(春季每日一题 53)_枚举_02 头奶牛说 Bessie 躲在小于或等于 谎牛计数(春季每日一题 53)_算法_03 的某个位置,或者说 Bessie 躲在大于或等于 谎牛计数(春季每日一题 53)_算法_03

不幸的是,可能不存在躲藏位置与所有奶牛的回答均一致,这意味着并非所有奶牛都在说真话。

计算在撒谎的奶牛的最小数量。

输入格式
输入的第一行包含 谎牛计数(春季每日一题 53)_#define

以下 谎牛计数(春季每日一题 53)_#define 行每行包含字符 ​​​L​​​ 或 ​​G​​​,之后是一个整数 谎牛计数(春季每日一题 53)_算法_03。​​​L​​​ 表示第 谎牛计数(春季每日一题 53)_枚举_02 头奶牛说 Bessie 的躲藏位置小于或等于 谎牛计数(春季每日一题 53)_算法_03,而 ​​​G​​​ 表示第 谎牛计数(春季每日一题 53)_枚举_02 头奶牛说 Bessie 的躲藏位置大于或等于 谎牛计数(春季每日一题 53)_算法_03

输出格式
输出在撒谎的奶牛的最小数量。

数据范围
谎牛计数(春季每日一题 53)_算法_12,
谎牛计数(春季每日一题 53)_枚举_13

输入样例1:

2
G 3
L 5

输出样例1:

0

样例1解释
有可能没有奶牛在撒谎。

输入样例2:

2
G 3
L 2

输出样例2:

1

样例2解释
至少一头奶牛在撒谎。


// 枚举每一个端点,撒谎的牛的数量等于左边的 L 之和 + 右边的 G 之和
// Bessie 所在位置取端点中间和取端点对答案的影响是一样的
#include<iostream>
#include<algorithm>

#define x first
#define y second

using namespace std;

const int N = 1010;

int n;
pair<int, char> q[N];
int s[N];

int main(){

cin >> n;

for(int i = 1; i <= n; i++) cin >> q[i].y >> q[i].x;

sort(q + 1, q + 1 + n);

for(int i = 1; i <= n; i++){
s[i] = s[i - 1];
if(q[i].y == 'L') s[i]++;
}



int res = n;
for(int i = n, r = 0; i; i--){

int j = i, t = 0;
while(j && q[j].x == q[i].x){
if(q[j].y == 'G') t++;
j--;
}

res = min(res, s[j] + r);
r += t;
i = j + 1;
}

cout << res << endl;

return 0;
}