Pagini recente » Cod sursa (job #1949978) | Cod sursa (job #2705228) | Cod sursa (job #1228245) | Cod sursa (job #316929) | Cod sursa (job #1163466)
#include <fstream>
using namespace std;
ifstream f("sarpe2.in");
ofstream h("sarpe2.out");
//FILE*f=fopen("sarpe2.in","r");
//FILE*h=fopen("sarpe2.out","w");
bool t[1005][1005];
int p[1005][1005];
int m[1005][1005],n,k,v[100005],sol,z;
int fill( int x , int y ){
if ( m[x][y]!=v[z]||x<1||x>n||y<1||y>n||z>k )return 0;
if ( p[x][y]!=0 ){
return p[x][y];
}
if ( t[x][y]!=0 )return 0;
t[x][y]=1;
if ( z==k ){
p[x][y]=1;
return 1;
}
++z;
p[x][y]=(fill(x+1,y)+fill(x-1,y)+fill(x,y+1)+fill(x,y-1)+fill(x+1,y+1)+fill(x-1,y-1)+fill(x-1,y+1)+fill(x+1,y-1))%666013;
--z;
return p[x][y];
}
int main(){
f>>n>>k;
for ( int i=1;i<=k;++i )
f>>v[i];
for ( int i=1;i<=n;++i )
for ( int j=1;j<=n;++j )
f>>m[i][j];
/*for ( int i=1;i<=n;++i ){
for ( int j=1;j<=n;++j )
fprintf(h,"%d ",m[i][j]);
fprintf(h,"\n");
}*/
for ( int i=1;i<=n;++i )
for ( int j=1;j<=n;++j )
if ( m[i][j]==v[1] ){
z=1;
sol=(sol+fill(i,j))%666013;
}
h<<sol;
return 0;
}