Pagini recente » Cod sursa (job #852249) | Cod sursa (job #424979) | Istoria paginii runda/cex_ph_2/clasament | Cod sursa (job #340868) | Cod sursa (job #683232)
Cod sursa(job #683232)
#include <iostream>
#include <fstream>
using namespace std;
char x;
int v[26],c[26], a[1024][1024],m,n,sum=0;
int verif()
{
for(int i=1;i<=26;i++)
if(c[i]!=v[i]) return 0;
return 1;
}
void citire()
{
ifstream fin("matrix.in");
fin>>m>>n;
for(int i=1;i<=m;i++)
for(int j=1;j<=m;j++)
{
fin >>x;
a[i][j]=x-'a'+1;
}
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
{
fin>>x;
++v[x-'a'+1];
}
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
++c[a[i][j]];
if(verif()) sum++;
}
void inlocuire(int x,int y)
{
for(int i=x;i<=n+x-1;i++)
c[a[i][y]]--;
for(int i=x;i<=n+x-1;i++)
c[a[i][y+n]]++;
}
void det()
{
for(int i=1;i<=m-n+1;i++)
{
for(int j=1;j<=m-n;j++)
{
inlocuire(i,j);
if(verif()) sum++;
}
for(int i2=1;i2<=26;i2++)
c[i2]=0;
for(int i2=i+1;i2<=n+i;i2++)
for(int j2=1;j2<=n;j2++)
++c[a[i2][j2]];
if(verif()) sum++;
}
}
int main()
{
citire();
det();
ofstream fout("matrix.out");
fout<<sum;
return 0;
}