Pagini recente » Cod sursa (job #2373726) | Cod sursa (job #1949395) | Cod sursa (job #1945951) | Cod sursa (job #424380) | Cod sursa (job #1146920)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("castel.in");
ofstream g("castel.out");
const short xx[5]={0,1,-1,0,0};
const short yy[5]={0,0,0,1,-1};
struct adat
{
short x,y;
bool l;
};
bool y[25505],b[155][155];
adat v[25505],szel[25505];
int comp(adat a,adat b)
{
return a.l>b.l;
}
int n,m,i,j,a[155][155],eleje,vege,aktx,akty,ujx,ujy,szvege,k,c[155][155],t,q,w;
int ell()
{
return ujx>=1 && ujy>=1 && ujx<=n && ujy<=m;
}
int torol(int poz)
{
for (int i=poz+1;i<=szvege;i++)
szel[i-1]=szel[i];
szvege--;
}
int szelessegi (int kezdi,int kezdj)
{
eleje=1;
vege=1;
v[1].x=kezdi;
v[1].y=kezdj;
b[kezdi][kezdj]=1;
while (eleje<=vege)
{
aktx=v[eleje].x;
akty=v[eleje].y;
y[c[aktx][akty]]=1;
for (k=1;k<=4;k++)
{
ujx=aktx+xx[k];
ujy=akty+yy[k];
if (!b[ujx][ujy] && ell())
{
if (y[a[ujx][ujy]])
{
vege++;
v[vege].x=ujx;
v[vege].y=ujy;
b[ujx][ujy]=1;
}
else
if (!y[a[ujx][ujy]])
{
szvege++;
szel[szvege].x=ujx;
szel[szvege].y=ujy;
b[szel[szvege].x][szel[szvege].y]=1;
}
}
}
for (int i=1;i<=szvege;i++)
if (c[aktx][akty]==a[szel[i].x][szel[i].y])
{
vege++;
v[vege].x=szel[i].x;
v[vege].y=szel[i].y;
torol(i);
i--;
}
eleje++;
}
}
int main()
{
f>>n>>m>>k;
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
{
f>>a[i][j];
t++;
c[i][j]=t;
}
if (k%m==0)
szelessegi(k/m,m);
else
szelessegi(k/m+1,k%m);
/*for (i=1;i<=n;i++)
{
for (j=1;j<=m;j++)
g<<b[i][j]<<" ";
g<<"\n";
}*/
/*for (i=1;i<=vege;i++)
g<<v[i].x<<" "<<v[i].y<<"\n";*/
g<<vege;
}