记录编号 19042 评测结果 AAAAAAAAAAAAAAAA
题目名称 翻译玛雅著作 最终得分 100
用户昵称 GravatarPom 是否通过 通过
代码语言 C++ 运行时间 1.338 s
提交时间 2010-09-28 09:20:09 内存使用 3.13 MiB
显示代码纯文本
#include <iostream>   
#include <cstdio>   
#include <cstdlib>   
#include <cmath>   
#include <cstring>   
  
using namespace std;   
  
int n,m,i,j,k,g[60],now[60],ko,ans,tot=0;   
char st[3000003],s[3005],ch;   
bool b[60];   
  
inline int ex(char c)   
{   
    if (c<='Z') return (int) c-64;   
    return (int) c-67;   
}   
  
void init()   
{   
    freopen("writing.in","r",stdin);   
    freopen("writing.out","w",stdout);   
    scanf("%d%d",&m,&n);   
    for (i=1;i<=m;i++)   
    {   
        for (;;)   
        {   
            scanf("%c",&ch);   
            if ((ch<='z' && ch>='a')||(ch<='Z' && ch>='A'))    
            {   
                s[i]=ch;   
                break;   
            }   
        }   
    }   
    for (i=1;i<=n;i++)   
    {   
        for (;;)   
        {   
            scanf("%c",&ch);   
            if ((ch<='z' && ch>='a')||(ch<='Z' && ch>='A'))    
            {   
                st[i]=ch;   
                break;   
            }   
        }   
    }   
    memset(g,0,sizeof(g));   
    memset(now,0,sizeof(0));   
    ko=0;   
    for (i=1;i<=m;i++)   
    {   
        g[ex(s[i])]++;   
        if (!b[ex(s[i])])   
        {   
            tot++;   
            b[ex(s[i])]=true;   
        }              
        now[ex(st[i])]++;   
    }   
    for (i=1;i<=60;i++)   
        if (now[i]>=g[i] && g[i]) ko++;    
}   
  
void solve()   
{   
    for (i=m+1;i<=n;i++)   
    {   
        if (ko==tot) ans++;   
        now[ex(st[i-m])]--;   
        if (now[ex(st[i-m])]==g[ex(st[i-m])]-1) ko--;   
        now[ex(st[i])]++;   
        if (now[ex(st[i])]==g[ex(st[i])]) ko++;   
    }   
    if (ko==tot) ans++;   
    printf("%d\n",ans);   
}   
  
int main()   
{   
    init();   
    solve();   
    return 0;   
}