比赛 20160414 评测结果 AATTTTTTTT
题目名称 随机数消除器 最终得分 20
用户昵称 Satoshi 运行时间 40.001 s
代码语言 C++ 内存使用 0.31 MiB
提交时间 2016-04-14 15:57:06
显示代码纯文本
#include <fstream>
#include <algorithm>
#include <cstring>
#include <string>
#include <map>
#define N 100010
using namespace std;

ifstream in("randomb.in");
ofstream out("randomb.out");
string s;
int n,tot=0;
map<string,bool> F;
void print(int l,int r)
{
	int i;
	for(i=l;i<=r;i++)out<<s[i];
	out<<endl;
}
void splay(int x)
{
	int l,r;
	string o;
	l=r=x;
	while(l>=0&&r<n)
	{
		if(s[l]==s[r])
		{
			o=s.substr(l,r-l+1);
			if(!F[o])
			{
			    tot++;
			    F[o]=1;
			}
			//print(l,r);
			l--;r++;
		}
		else break;
	}
}
void spaly(int x)
{
	int l,r;
	string o;
	l=x;r=x+1;
	while(l>=0&&r<n)
	{
		if(s[l]==s[r])
		{
			o=s.substr(l,r-l+1);
			if(!F[o])
			{
			    tot++;
			    F[o]=1;
			}
		    //print(l,r);
		    l--;r++;
		}
		else break;
	}
}
int main()
{
	int i;
	in>>s;
	n=s.length();
	for(i=0;i<n;i++)splay(i);
	for(i=0;i<n;i++)spaly(i);
	out<<tot<<endl;
	/*out<<n<<endl;
	for(i=0;i<n;i++)out<<s[i]<<' ';
	out<<endl;*/
	return 0;
}