Cod sursa(job #904207)

Utilizator ion824Ion Ureche ion824 Data 3 martie 2013 21:49:42
Problema Matrix Scor 75
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include<fstream>
using namespace std;
const int NM=1002;
char a[NM][NM],b[NM][NM];
int c0[27],l0[27],t[27],g[27],t0[27],NR;

void verify(){
     for(int i=0;i<26;++i)if(t[i]!=g[i])return;
     ++NR;
     }

int main(){
    ifstream cin("matrix.in");
    ofstream cout("matrix.out");  
    int N,M,i,j,q,k;
    cin>>N>>M;
    for(i=1;i<=N;++i)
      for(j=1;j<=N;++j)cin>>a[i][j];
    for(i=1;i<=M;++i)
      for(j=1;j<=M;++j){ cin>>b[i][j]; g[b[i][j]-'a']++; t[a[i][j]-'a']++; }
    
    for(i=0;i<26;++i) t0[i]=t[i]; 
    
    for(i=1;i<=N-M+1;++i)
    {
      if(i!=1){
               for(q=0;q<26;++q)t[q]=t0[q];
               for(q=1;q<=M;++q){ t[a[i+M-1][q]-'a']++; t[a[i-1][q]-'a']--; }
               for(q=0;q<26;++q)t0[q]=t[q];
               }
      verify();          
      for(j=M+1;j<=N;++j)
        {
          for(k=i;k<=M+i-1;++k)
            { t[a[k][j]-'a']++; t[a[k][j-M]-'a']--; }
          verify();                 
        }                            
    }
    
    cout<<NR;         
  return 0;
}