Cod sursă (job #478198)

Utilizator avatar Hey_Hey Denis Iacovlev Hey_Hey IP ascuns
Problemă Immortal (clasele 9-10) Compilator cpp | 0,86 kb
Rundă Arhiva de probleme Status evaluat
Dată 3 iun. 2019 17:29:31 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;
pair<pair<int,int>,pair<int,int> > A[20];
bool B[21][21],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]);
}

back(int x, int y, int q)
{
	if(q==I-1)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]]) A[q].x.x=x, A[q].x.y=y, A[q].y.x=xx, A[q].y.x=yy, back(xx,yy,q+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].x.x << " " << A[i].x.y << " " << A[i].y.x << " " << A[i].y.x << '\n';
}