Game with string

Two people are playing a game with a string ss, consisting of lowercase latin letters.

On a player's turn, he should choose two consecutive equal letters in the string and delete them.

For example, if the string is equal to "xaax" than there is only one possible turn: delete "aa", so the string will become "xx". A player not able to make a turn loses.

Your task is to determine which player will win if both play optimally.

Input

The only line contains the string ss, consisting of lowercase latin letters (1≤|s|≤1000001≤|s|≤100000), where |s||s| means the length of a string ss.

Output

If the first player wins, print "Yes". If the second player wins, print "No".

Examples

Input

Copy

扫描二维码关注公众号,回复: 5093087 查看本文章
abacaba

Output

Copy

No

Input

Copy

iiq

Output

Copy

Yes

Input

Copy

abba

Output

Copy

No

Note

In the first example the first player is unable to make a turn, so he loses.

In the second example first player turns the string into "q", then second player is unable to move, so he loses.

写了个双向链表暴力模拟,  开始过了,最后被hack的tle了。

正解o(n),用栈,类似匹配括号那样,因为取出哪个位置相邻的两个不影响最后胜负,真是智障如我。

#include<bits/stdc++.h>
using namespace std;

stack<char> s;
string str;

int main()
{
//	freopen("input.in","r",stdin);
	bool win=0;
	cin>>str;
	int len=str.length();
	for(int i=0;i<len;i++)
	{
		if(s.empty())s.push(str[i]);
		else
		{
			if(s.top()==str[i])s.pop(),win=!win;
			else s.push(str[i]);
		}
	}
	puts(win?"Yes":"No");
	return 0;
}

猜你喜欢

转载自blog.csdn.net/Wen_Yongqi/article/details/86618859