Pagini recente »
Istoria paginii runda/2015-04-04-test-5/clasament
|
Istoria paginii utilizator/mihneamarginean
|
2020-03-05-test-7
|
Istoria paginii utilizator/garen456
|
Cod sursă (job #378091)
Cod sursă (job
#378091)
#include<bits/stdc++.h>
#define x first
#define y second
using namespace std;
struct lol {
int x, y, x2,y2;
} s[30];
pair<int,int> a[30];
int n,m,q,N;
int M[30][30];
int dx[] = {0,-1,0,1};
int dy[] = {-1,0,1,0};
bool u;
ofstream fout("immortal.out");
bool OK(int i, int j) {
return (i>=1 && j>=1 && j<=m && i<=n);
}
int rs;
void BT(int k) {
if (k==N) {
for (int i=1; i<k; i++) {
fout<<s[i].x<<" "<<s[i].y<<" "<<s[i].x2<<" "<<s[i].y2<<'\n';
}
exit(0);
}
for (int i=1; i<=N; i++) {
int posi=a[i].x, posj=a[i].y;
if (!M[posi][posj]) continue;
for (int d=0; d<4; d++) {
int i2=posi + dx[d];
int j2=posj + dy[d];
int i3 = i2 + dx[d];
int j3 = j2 + dy[d];
if (OK(i3, j3) && M[i2][j2] && !M[i3][j3]) {
M[i2][j2] = M[posi][posj] = 0;
a[i].x = i3;
a[i].y = j3;
M[i3][j3] = 1;
s[k]= {posi, posj, i3, j3};
BT(k+1);
M[i2][j2] = M[posi][posj] = 1;
M[i3][j3] = 0;
a[i].x = posi;
a[i].y = posj;
}
}
}
}
int main() {
ifstream cin("immortal.in");
cin>>n>>m>>q;
while (q--) {
++N;
cin>>a[N].x>>a[N].y;
M[a[N].x][a[N].y] = 1;
}
BT(1);
return 0;
}