Pagini recente » Cod sursa (job #2040584) | Cod sursa (job #2002442) | Cod sursa (job #661006) | Cod sursa (job #1685425) | Cod sursa (job #2755464)
#include <bits/stdc++.h>
using namespace std;
ifstream f("panda.in");
ofstream g("panda.out");
int p,n,m,t,lin,col,s,x,r,cont,a,b,a1,b1,rasp1,rasp2;
long long w,mat[509][509],p10,k,kk,aux,plan[509][509];
pair <int,int> mancare[250009];
int l[]={-1,0,1,0};
int c[]={0,1,0,-1};
queue<pair<int,int>> q;
int main()
{
f>>p>>n>>m>>t>>lin>>col>>k>>s;
for(int i=1;i<=t;i++)
f>>mancare[i].first>>mancare[i].second;
p10=1;
w=0;
while(k!=0)
{
r=k%2;
w=p10*r+w;
p10*=10;
k/=2;
}
k=w;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
f>>x;
p10=1;
w=0;
while(x!=0)
{
r=x%2;
w=p10*r+w;
p10*=10;
x/=2;
}
kk=k;
bool ok=1;
for(int q=1;q<=s;q++)
{
if((kk%10)==(w%10))
{
ok=0;
break;
}
kk/=10;
w/=10;
}
if(ok==1)
mat[i][j]=1;
}
}
if(p==1)
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cont+=mat[i][j];
}
}
g<<cont-1;
}
else
{
for(int i=1;i<=t;i++)
{
if(mat[mancare[i].first][mancare[i].second]==1)
mat[mancare[i].first][mancare[i].second]=2;
}
mat[lin][col]=3;
plan[lin][col]=1;
q.push({lin,col});
while(!q.empty() && rasp1==0)
{
a=q.front().first;
b=q.front().second;
for(int r=0;r<=3;r++)
{
a1=a+l[r];
b1=b+c[r];
if(mat[a1][b1]==1 && plan[a1][b1]==0)
{
plan[a1][b1]=plan[a][b]+1;
q.push({a1,b1});
}
if(mat[a1][b1]==2)
{
rasp1=plan[a][b];
rasp2++;
}
}
q.pop();
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
g<<mat[i][j]<<' ';
}
g<<endl;
}
g<<endl;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
g<<plan[i][j]<<' ';
}
g<<endl;
}
g<<rasp1<<' '<<rasp2;
}
return 0;
}