Pagini recente »
Cod sursă (job #485955)
|
Monitorul de evaluare
|
Istoria paginii runda/s15_6_lab15
|
Cod sursă (job #816364)
|
Cod sursă (job #249995)
Cod sursă (job
#249995)
#include <fstream>
#include <stdlib.h>
#define x first
#define y second
using namespace std;
ifstream fin("immortal.in");
ofstream fout("immortal.out");
struct sol
{
int px,py,sx,sy;
}S[410];
const int dl[]={-1,0,1,0};
const int dc[]={0,1,0,-1};
int N,M,I;
pair <int,int> A[410];
bool f[410],V[22][22];
bool isOK(int i,int j)
{
if (i<1 || i>N || j<1 || j>M)
return 0;
return 1;
}
int Cauta(int i,int j)
{
for(int p=1;p<=I;p++)
{
if(!f[p] && A[p].x==i && A[p].y==j)
return p;
}
return 0;
}
void Back(int k)
{
if(k==1)
{
for(int i=I;i>=2;i--)
fout<<S[i].px<<' '<<S[i].py<<' '<<S[i].sx<<' '<<S[i].sy<<'\n';
exit(0);
}
else
for(int i=1;i<=I;i++)
if(!f[i])
{
int auxi=A[i].x;
int auxj=A[i].y;
for(int p=0;p<4;p++)
{
int ii=auxi+dl[p];
int jj=auxj+dc[p];
int _ii=ii+dl[p];
int _jj=jj+dc[p];
if (isOK(_ii,_jj) && V[ii][jj] && !V[_ii][_jj])
{
int j=Cauta(ii, jj);
S[k].px=auxi;
S[k].py=auxj;
S[k].sx=_ii;
S[k].sy=_jj;
V[auxi][auxj]=0;
V[ii][jj]=0;
V[_ii][_jj]=1;
A[i].x=_ii;
A[i].y=_jj;
f[j]=1;
Back(k-1);
V[auxi][auxj]=1;
V[ii][jj]=1;
V[_ii][_jj]=0;
A[i].x=auxi;
A[i].y=auxj;
f[j]=0;
}
}
}
}
int main()
{
fin>>N>>M>>I;
for(int i=1;i<=I;i++)
{
fin>>A[i].x>>A[i].y;
V[A[i].x][A[i].y]=1;
}
Back(I);
return 0;
}