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