Cod sursă (job #154147)
Utilizator |
|
IP | ascuns |
---|---|---|---|
Problemă | Immortal (clasele 9-10) | Compilator | cpp | 3,08 kb |
Rundă | Arhiva de probleme | Status | evaluat |
Dată | 29 aug. 2015 16:24:06 | Scor | 10 |
#include <fstream>
using namespace std;
ifstream fin("immortal.in");
ofstream fout("immortal.out");
int n,m,nr,w[10000];
bool a[1000][1000];
void afis(int k){
int i;
for(i=1;i<k;i++)
{
fout<<w[i*4-3]<<" "<<w[i*4-2]<<" "<<w[i*4-1]<<" "<<w[i*4];
fout<<'\n';
}
}
void backtr(int k){
int i,j;
if(k>=nr)
{
afis(k);
m=0;n=0;
}
else{
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if(a[i][j]==1){
if(a[i-1][j]==1 && i-1>0){
if(i-2>0){
a[i-1][j]=0;
a[i][j]=0;
a[i-2][j]=1;
w[k*4]=j;
w[k*4-1]=i-2;
w[k*4-2]=j;
w[k*4-3]=i;
backtr(k+1);
a[i-2][j]=0;
a[i][j]=1;
a[i-1][j]=1;
}
if(i+1<=n){
a[i-1][j]=0;
a[i][j]=0;
a[i+1][j]=1;
w[k*4]=j;
w[k*4-1]=i+1;
w[k*4-2]=j;
w[k*4-3]=i-1;
backtr(k+1);
a[i+1][j]=0;
a[i][j]=1;
a[i-1][j]=1;
}
}
if(a[i][j-1]==1 && j-1>0){
if(j-2>0){
a[i][j-1]=0;
a[i][j]=0;
a[i][j-2]=1;
w[k*4]=j-2;
w[k*4-1]=i;
w[k*4-2]=j;
w[k*4-3]=i;
backtr(k+1);
a[i][j-1]=1;
a[i][j]=1;
a[i][j-2]=0;
}
if(j+1<=m){
a[i][j-1]=0;
a[i][j]=0;
a[i][j+1]=1;
w[k*4]=j+1;
w[k*4-1]=i;
w[k*4-2]=j-1;
w[k*4-3]=i;
backtr(k+1);
a[i][j-1]=1;
a[i][j]=1;
a[i][j+1]=0;
}
}
}
}
}
int main(){
fin>>n>>m>>nr;
int i,x,y;
for(i=1;i<=nr;i++)
{
fin>>x>>y;
a[x][y]=1;
}
backtr(1);
return 0;
}