Cod sursa(job #632009)

Utilizator otilia_sOtilia Stretcu otilia_s Data 10 noiembrie 2011 00:52:56
Problema Matrix Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <fstream> 
using namespace std;
#define NMAX 1024

int ch[NMAX][NMAX][27];
int n,m;
char a[NMAX][NMAX];
int v[27];

void citire()
{
    ifstream fin("matrix.in");
    fin>>m>>n;
    
    int i,j;
    for (i=1;i<=m;++i)
	{
		fin>>(a[i]+1);
	}
    for (i=0;i<n;++i)
    {
	char s[NMAX];
	fin>>s;
	for (j=0;j<n;++j)
	    v[s[j]-'a']++;
    }
}

int main()
{
    citire();    
    
    int i,j,k,sol=0,cate;

    for (i=1;i<=m;++i)
	for (j=1;j<=m;++j)	
	{
	    cate=0;
		ch[i][j][a[i][j]-'a']=1;
	    for (k=0;k<26;++k)
	    {
		ch[i][j][k]+=ch[i-1][j][k]+ch[i][j-1][k]-ch[i-1][j-1][k];
		if (i>=n && j>=n && ch[i][j][k]-ch[i-n][j][k]-ch[i][j-n][k]+ch[i-n][j-n][k]==v[k]) 
		    ++cate;
	    }	 
	    if (cate==26) ++sol;
	}
    
    ofstream fout("matrix.out");
    fout<<sol;

    return 0;
}