Cod sursă (job #295615)

Utilizator avatar micutu Andrei Vasile Cont Fraudulent micutu IP ascuns
Problemă Immortal (clasele 9-10) Compilator cpp | 1.10 kb
Rundă Arhiva de probleme Status evaluat
Dată 26 mar. 2017 06:55:53 Scor 40
#include <stdlib.h>
#include <fstream>
using namespace std;
ifstream fi("immortal.in");
ofstream fo("immortal.out");
int SL1[20], SC1[20], SL2[20] ,SC2[20];
int n,m,I,i,x,y,A[21][21];
int dl[4]={-1,0,1,0};
int dc[4]={0,1,0,-1};

void g( int k)
{
	int i,lin,col,d,lnou,cnou,lp,cp;
	if(k==I-1)
	{
		for (i=1;i<=k;i++)
			fo<<SL1[i]<<" "<<SC1[i]<<" "<<SL2[i]<<" "<<SC2[i]<<"\n";
		fi.close();
		fo.close();
		exit(0);
	}
	for (lin=1;lin<=n;lin++)
		for (col=1;col<=m;col++)
			if (A[lin][col]==1)
				for (d=0;d<=3;d++)
				{
					lnou=lin+2*dl[d];
					cnou=col+2*dc[d];
					lp=lin+dl[d];
					cp=col+dc[d];
					if (A[lnou][cnou]==0 && A[lp][cp]==1 && lnou>=1 && lnou<=n && cnou>=1 && cnou<=m)
					{
						A[lp][cp]=0;
						A[lnou][cnou]=1;
						A[lin][col]=0;
						SL1[k+1]=lin;
						SC1[k+1]=col;
						SL2[k+1]=lnou;
						SC2[k+1]=cnou;
						g(k+1);
						A[lp][cp]=1;
						A[lnou][cnou]=0;
						A[lin][col]=1;
					}
				}
}

int main()
{
	fi>>n>>m>>I;
	for(i=1; i<=I; i++)
	{
		fi>>x>>y;
		A[x][y]=1;
	}
	g(0);
	fi.close();
	fo.close();
	return 0;
}