记录编号 171541 评测结果 AAAAAAAAAA
题目名称 [NOIP 2011]统计单词数 最终得分 100
用户昵称 Gravatar神利·代目 是否通过 通过
代码语言 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();
}