Pagini recente »
Cod sursă (job #333354)
Cod sursă (job
#333354)
#include <fstream>
using namespace std;
struct pos
{
int x,y;
}v[16];
struct mv
{
pos s,e;
}st[16];
const int dx[]={0,1,0,-1},dy[]={-1,0,1,0};
int n,m,k,a[22][22];
bool sol;
ifstream fin("immortal.in");
ofstream fout("immortal.out");
void back(int pos)
{
for(int i=1;i<=k;++i)
{
int x=v[i].x,y=v[i].y;
if(!x)
continue;
for(int j=0;j<4;++j)
{
int ox=x+dx[j],oy=y+dy[j],nx=ox+dx[j],ny=oy+dy[j];
if(a[ox][oy])
if(!a[nx][ny] && nx && ny && nx<=n && ny<=m)
{
int opp=a[ox][oy];
v[opp].x=0;
a[ox][oy]=a[x][y]=0;
a[nx][ny]=i;
st[pos].s=v[i];
v[i].x=nx;
v[i].y=ny;
st[pos].e=v[i];
if(pos==k-2)
{
for(int i=0;i<k-1;++i)
fout<<st[i].s.x<<" "<<st[i].s.y<<" "<<st[i].e.x<<" "<<st[i].e.y<<"\n";
sol=1;
}
else
back(pos+1);
if(sol)
return;
v[i].x=x;
v[i].y=y;
v[opp].x=ox;
a[x][y]=i;
a[ox][oy]=opp;
a[nx][ny]=0;
}
}
}
}
int main()
{
fin>>n>>m>>k;
for(int i=1;i<=k;++i)
{
fin>>v[i].x>>v[i].y;
a[v[i].x][v[i].y]=i;
}
back(0);
return 0;
}