Pagini recente »
Monitorul de evaluare
|
Cod sursă (job #108337)
|
Istoria paginii runda/pregatire_9_runda2/clasament
|
Diferențe pentru runda/oji-2023-antrenament-ffa-v2 între reviziile 40 și 13
|
Cod sursă (job #319707)
Cod sursă (job
#319707)
#include <bits/stdc++.h>
using namespace std;
int n, m, k, l[22], c[22];
int Sol[16][4];
bool ok = 0, v[22];
int f[22][22];
inline void back(int contor){
if(contor == k - 1){
ok = 1;
for(int i = 0; i < contor ; ++i)
printf("%d %d %d %d\n", Sol[i][0], Sol[i][1], Sol[i][2], Sol[i][3]);
return ;
}
for(int i = 1; i <= k && !ok ; ++i){
if(v[i] == 0){
if(f[l[i]][c[i] - 1] != 0 && f[l[i]][c[i] - 2] == 0 && c[i] - 2 > 0){
int aux = f[l[i]][c[i] - 1];
v[f[l[i]][c[i] - 1]] = 1;
f[l[i]][c[i] - 1] = 0;
f[l[i]][c[i] - 2] = f[l[i]][c[i]];
f[l[i]][c[i]] = 0;
Sol[contor][0] = l[i];
Sol[contor][1] = c[i];
Sol[contor][2] = l[i];
Sol[contor][3] = c[i] - 2;
c[i] -= 2;
back(contor + 1);
c[i] += 2;
f[l[i]][c[i] - 1] = aux;
v[f[l[i]][c[i] - 1]] = 0;
f[l[i]][c[i]] = f[l[i]][c[i] - 2];
f[l[i]][c[i] - 2] = 0;
}
if(f[l[i]][c[i] + 1] != 0 && f[l[i]][c[i] + 2] == 0 && c[i] + 2 <= m){
int aux = f[l[i]][c[i] + 1];
v[f[l[i]][c[i] + 1]] = 1;
f[l[i]][c[i] + 1] = 0;
f[l[i]][c[i] + 2] = f[l[i]][c[i]];
f[l[i]][c[i]] = 0;
Sol[contor][0] = l[i];
Sol[contor][1] = c[i];
Sol[contor][2] = l[i];
Sol[contor][3] = c[i] + 2;
c[i] += 2;
back(contor + 1);
c[i] -= 2;
f[l[i]][c[i] + 1] = aux;
v[f[l[i]][c[i] + 1]] = 0;
f[l[i]][c[i]] = f[l[i]][c[i] + 2];
f[l[i]][c[i] + 2] = 0;
}
if(f[l[i] - 1][c[i]] != 0 && f[l[i] - 2][c[i]] == 0 && l[i] - 2 > 0){
int aux = f[l[i] - 1][c[i]];
v[f[l[i] - 1][c[i]]] = 1;
f[l[i] - 1][c[i]] = 0;
f[l[i] - 2][c[i]] = f[l[i]][c[i]];
f[l[i]][c[i]] = 0;
Sol[contor][0] = l[i];
Sol[contor][1] = c[i];
Sol[contor][2] = l[i] - 2;
Sol[contor][3] = c[i];
l[i] -= 2;
back(contor + 1);
l[i] += 2;
f[l[i] - 1][c[i]] = aux;
v[f[l[i] - 1][c[i]]] = 0;
f[l[i]][c[i]] = f[l[i] - 2][c[i]];
f[l[i] - 2][c[i]] = 0;
}
if(f[l[i] + 1][c[i]] != 0 && f[l[i] + 2][c[i]] == 0 && l[i] + 2 > 0){
int aux = f[l[i] + 1][c[i]];
v[f[l[i] + 1][c[i]]] = 1;
f[l[i] + 1][c[i]] = 0;
f[l[i] + 2][c[i]] = f[l[i]][c[i]];
f[l[i]][c[i]] = 0;
Sol[contor][0] = l[i];
Sol[contor][1] = c[i];
Sol[contor][2] = l[i] + 2;
Sol[contor][3] = c[i];
l[i] += 2;
back(contor + 1);
l[i] -= 2;
f[l[i] + 1][c[i]] = aux;
v[f[l[i] + 1][c[i]]] = 0;
f[l[i]][c[i]] = f[l[i] + 2][c[i]];
f[l[i] + 2][c[i]] = 0;
}
}
}
}
int main()
{
freopen("immortal.in", "r", stdin);
freopen("immortal.out", "w", stdout);
scanf("%d%d%d", &n, &m, &k);
for(int i = 1; i <= k ; ++i)
scanf("%d%d", &l[i], &c[i]), f[l[i]][c[i]] = i;
back(0);
return 0;
}