Pagini recente »
Statistici Tudor Alina (tudoralina)
|
Cod sursă (job #513369)
|
Borderou de evaluare (job #133045)
|
Monitorul de evaluare
|
Cod sursă (job #417651)
Cod sursă (job
#417651)
#include <fstream>
#include <algorithm>
#define x first
#define y second
using namespace std;
ifstream in("immortal.in");
ofstream out("immortal.out");
int_fast32_t n, m, rasp, t, l1[16], c1[16], c2[16], l2[16], r, v2[21][21], d1[5]= {0, -1, 0, 1, 0}, d2[5]= {0, 0, 1, 0, -1};
pair <int_fast32_t, int_fast32_t> v[16];
void bkt(int_fast32_t nr)
{
if (nr == 1)
{
for (int_fast32_t i = 1; i < t; ++i)
out << l1[i] << " " << c1[i] << " " << l2[i] << " " << c2[i] << '\n';
r = 1;
return;
}
if (r == 1)
return;
for (int_fast32_t i = t; i >= 1; --i)
{
if (v2[v[i].x][v[i].y] == 1)
{
for (int_fast32_t j = 1; j <= 4; ++j)
{
int_fast32_t l = v[i].x;
int_fast32_t c = v[i].y;
if (l + 2 * d1[j] <= n && l + 2 * d1[j] >= 1 && c + 2 * d2[j] <= m && c + 2 * d2[j] >= 1 && v2[l + d1[j]][c + d2[j]] == 1 && v2[l + 2 * d1[j]][c + 2 * d2[j]] == 0)
{
++rasp;
l1[rasp] = l;
c1[rasp] = c;
l2[rasp] = l + 2 * d1[j];
c2[rasp] = c + 2 * d2[j];
v2[l + d1[j]][c + d2[j]] = 0;
v2[l + 2 * d1[j]][c + 2 * d2[j]] = 1;
v2[l][c] = 0;
v[i].x += 2 * d1[j];
v[i].y += 2 * d2[j];
bkt(nr - 1);
if (r == 1)
return;
--rasp;
v2[l + d1[j]][c + d2[j]] = 1;
v2[l + 2 * d1[j]][c + 2 * d2[j]] = 0;
v2[l][c] = 1;
v[i].x = l;
v[i].y = c;
}
}
}
}
}
int main()
{
in >> n >> m >> t;
for (int_fast32_t i = 1; i <= t; ++i)
{
in >> v[i].x >> v[i].y;
v2[v[i].x][v[i].y] = 1;
}
sort(v + 1, v + t + 1);
bkt(t);
return 0;
}