Pentru această operație este nevoie să te autentifici.
Cod sursă (job #478201)
Utilizator |
|
IP | ascuns |
---|---|---|---|
Problemă | Immortal (clasele 9-10) | Compilator | cpp | 0,91 kb |
Rundă | Arhiva de probleme | Status | evaluat |
Dată | 3 iun. 2019 17:44:50 | Scor | 0 |
#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;
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; 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';
}