| 比赛 | 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;
}