记录编号 |
171541 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[NOIP 2011]统计单词数 |
最终得分 |
100 |
用户昵称 |
神利·代目 |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.032 s |
提交时间 |
2015-07-19 20:07:22 |
内存使用 |
1.35 MiB |
显示代码纯文本
#include<cstdio>
#include<cstring>
using namespace std;
int d,l,k,shu,num,w,next[12];
char c[12],s[1111111];
int main()
{
freopen("stat.in","r",stdin);
freopen("stat.out","w",stdout);
gets(c);
gets(s);
d=strlen(c);
l=strlen(s);
if(c[0]<'a')
c[0]+=32;
for(int i=0;i<l;++i)
if(s[i]<'a')
s[i]+=32;
next[0]=0;
for(int i=1;i<d;++i)
{
if(c[i]<'a')
c[i]+=32;
k=next[i-1];
while(c[k]!=c[i]&&k)
k=next[k-1];
if(c[i]==c[k])
next[i]=next[k]+1;
}
for(int i=0;i<l;++i)
{
if(c[shu]==s[i])
{
if(shu==d-1&&s[i+1]=='@'&&s[i-d]=='@')
{
++num;
if(num==1)
w=i-d+1;
shu=0;
}
if(shu==d-1&&s[i+1]!='@')
shu=0;
if(shu!=d-1)
++shu;
continue;
}
if(shu)
{
shu=shu-next[shu-1]-1;
--i;
}
}
if(num)
printf("%d %d",num,w);
else
printf("-1");
getchar();
getchar();
}