Codeforces 1744C. Traffic Light

C. Traffic Light
time limit per test1 second
memory limit per test256 megabytes
inputstandard input
outputstandard output
You find yourself on an unusual crossroad with a weird traffic light. That traffic light has three possible colors: red ®, yellow (y), green (g). It is known that the traffic light repeats its colors every n seconds and at the i-th second the color si is on.

That way, the order of the colors is described by a string. For example, if s=“rggry”, then the traffic light works as the following: red-green-green-red-yellow-red-green-green-red-yellow- … and so on.

More formally, you are given a string s1,s2,…,sn of length n. At the first second the color s1 is on, at the second — s2, …, at the n-th second the color sn is on, at the n+1-st second the color s1 is on and so on.

You need to cross the road and that can only be done when the green color is on.

You know which color is on the traffic light at the moment, but you don’t know the current moment of time. You need to find the minimum amount of time in which you are guaranteed to cross the road.

You can assume that you cross the road immediately.

For example, with s=“rggry” and the current color r there are two options: either the green color will be on after 1 second, or after 3. That way, the answer is equal to 3 — that is the number of seconds that we are guaranteed to cross the road, if the current color is r.

Input
The first line contains a single integer t (1≤t≤104) — the number of test cases.

Then the description of the test cases follows.

The first line of each test case contains an integer n and a symbol c (1≤n≤2⋅105, c is one of allowed traffic light colors r, y or g)— the length of the string s and the current color of the traffic light.

The second line of each test case contains a string s of the length n, consisting of the letters r, y and g.

It is guaranteed that the symbol g is in the string s and the symbol c is in the string s.

It is guaranteed, that the sum of n over all test cases does not exceed 2⋅105.

Output
For each test case output the minimal number of second in which you are guaranteed to cross the road.

Example
inputCopy
6
5 r
rggry
1 g
g
3 r
rrg
5 y
yrrgy
7 r
rgrgyrg
9 y
rrrgyyygy
outputCopy
3
0
2
4
1
4
Note
The first test case is explained in the statement.

In the second test case the green color is on so you can cross the road immediately.

In the third test case, if the red color was on at the second second, then we would wait for the green color for one second, and if the red light was on at the first second, then we would wait for the green light for two seconds.

In the fourth test case the longest we would wait for the green color is if we wait for it starting from the fifth second.

#include<bits/stdc++.h>
using namespace std;
int main(void) {
	int t;
	cin >> t;
	while (t--) {
		int n;
		char c;
		string s;
		cin >> n >> c >> s;
		s += s;
		int cnt = 0, maxv = 0, flag = 0;
		for (int i = 0; i < s.length(); i++) {
			if (s[i] == c) flag = 1;
			if (s[i] == 'g')flag = 0, maxv = max(maxv, cnt), cnt = 0;
			if (flag==1)cnt++;
		}
		cout << maxv << endl;
	}
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值