Pagini recente »
Borderou de evaluare (job #273886)
|
Borderou de evaluare (job #190075)
|
Istoria paginii runda/cnamd09/clasament
|
Istoria paginii runda/satevad/clasament
|
Cod sursă (job #478202)
Cod sursă (job
#478202)
#include <bits/stdc++.h>
#define x first
#define y second
using namespace std;
ifstream fi("immortal.in");
ofstream fo("immortal.out");
int N,M,I,i,j,x,y,xx,yy;
typedef
struct
{
int a,b,c,d;
}patr;
patr A[20];
bool B[25][25], b;
short X[]={-1,0,1,0},
Y[]={0,1,0,-1};
bool OK(int x, int y)
{
return(x>0 && x<=N && y>0 && y<=M && !B[x][y]);
}
void back(int x, int y, int q)
{
if(q==I)b=1;
else
for(int k=0; k<4; k++)
{
xx=x+2*X[k];
yy=y+2*Y[k];
if(OK(xx,yy) && B[x+X[k]][y+Y[k]])
B[x+X[k]][y+Y[k]]=0,
A[q].a=x, A[q].b=y, A[q].c=xx, A[q].d=yy,
back(xx,yy,q+1),
B[x+X[k]][y+Y[k]]=1;
}
}
int main()
{
fi >> N >> M >> I;
for(i=1; i<=I; i++)
{
fi >> x >> y;
B[x][y]=1;
}
for(i=1; i<=N && !b; i++)
{
for(j=1; j<=M && !b; j++)
if(B[i][j])back(i,j,1);
}
for(i=1; i<I; i++)
fo << A[i].a << " " << A[i].b << " " << A[i].c << " " << A[i].d << '\n';
}