Pagini recente »
Clasament lasm_19_01_2022_cl11
|
Cod sursă (job #293089)
Cod sursă (job
#293089)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("immortal.in");
ofstream fout("immortal.out");
int n, m, nr, i, v[50], M[50][50], val, cnr;
int dl[] = {0, -1, 0, 1, 0};
int dc[] = {0, 0, 1, 0, -1};
struct elem
{
int i, j;
};elem vr[100];
struct tin
{
int ii, ij, si, sj;
};tin t[100];
void bkt(int nr)
{
int i1, j1, c, i9, j9, k, i, val;
if (nr == 1)
{
for (i = cnr; i > 1; i--)
fout << t[i].ii << ' ' << t[i].ij << ' ' << t[i].si << ' ' << t[i].sj << '\n';
exit(0);
}
for (i = 1; i <= cnr; i++)
{
if (v[i] == 0)
{
for (k = 1; k <= 4; k++)
{
i1 = vr[i].i + dl[k];
j1 = vr[i].j + dc[k];
i9 = i1 + dl[k];
j9 = j1 + dc[k];
if (M[i1][j1] != 0 && i9 > 0 && i9 <= n && j9 > 0 && j9 <= m && M[i9][j9] == 0)
{
val = M[i1][j1];
v[val] = 1;
t[nr].ii = vr[i].i;
t[nr].ij = vr[i].j;
t[nr].si = i9;
t[nr].sj = j9;
c = M[i1][j1];
M[i1][j1] = 0;
M[vr[i].i][vr[i].j] = 0;
vr[i].i = i9;
vr[i].j = j9;
M[i9][j9] = i;
bkt(nr - 1);
M[i9][j9] = 0;
vr[i].i -= 2 * dl[k];
vr[i].j -= 2 * dc[k];
M[vr[i].i][vr[i].j] = i;
M[i1][j1] = c;
v[val] = 0;
}
}
}
}
}
int main()
{
fin >> n >> m >> nr;
cnr = nr;
for (i = 1; i <= nr; i++)
{
fin >> vr[i].i >> vr[i].j;
M[vr[i].i][vr[i].j] = i;
}
bkt(nr);
}