Pagini recente »
Cod sursă (job #333351)
Cod sursă (job
#333351)
#include <bits/stdc++.h>
using namespace std;
ifstream f("immortal.in");
ofstream g("immortal.out");
int n,m,q,i,a[1<<9],b[1<<9],C[1<<9],d[1<<9],x[1<<9],y[1<<9],viz[22],M[22][22];
int dx[]={1,-1,0,0};
int dy[]={0,0,1,-1};
inline void backy(int k)
{
if(k==q)
{
for(int i=1;i<k;++i) g<<a[i]<<' '<<b[i]<<' '<<C[i]<<' '<<d[i]<<'\n';
exit(0);
}
for(int i=1;i<=q;++i)
if(!viz[i])
{
for(int j=0;j<4;++j)
{
int l=dx[j]+x[i];
int c=dy[j]+y[i];
if(M[l][c]&&l+dx[j]>0&&l+dx[j]<=n&&c+dy[j]>0&&c+dy[j]<=m&&!M[l+dx[j]][c+dy[j]])
{
/// elimin
int ind=M[l][c];
M[l][c]=0;
viz[ind]=1;
/// initializez
M[x[i]][y[i]]=0;
a[k]=x[i];
b[k]=y[i];
x[i]+=2*dx[j];
y[i]+=2*dy[j];
C[k]=x[i];
d[k]=y[i];
M[x[i]][y[i]]=i;
backy(k+1);
M[x[i]][y[i]]=0;
x[i]-=2*dx[j];
y[i]-=2*dy[j];
M[x[i]][y[i]]=i;
viz[ind]=0;
M[l][c]=ind;
}
}
}
}
int main()
{
f>>n>>m>>q;
for(i=1;i<=q;++i)
{
f>>x[i]>>y[i];
M[x[i]][y[i]]=i;
}
backy(1);
return 0;
}