Pagini recente »
Borderou de evaluare (job #811036)
|
Monitorul de evaluare
|
Monitorul de evaluare
|
nu_este_greu
|
Cod sursă (job #295614)
Cod sursă (job
#295614)
#include <fstream>
#include <cstdlib>
using namespace std;
ifstream fin("immortal.in");
ofstream fout("immortal.out");
int linii, coloane, gladiatori, i, activ[50], x, M[50][50], valoare, c_nr;
int dir_i[] = {0, -1, 0, 1, 0};
int dir_j[] = {0, 0, 1, 0, -1};
struct copac
{
int i, j;
};copac v[100];
struct tin
{
int i_i, i_j, s_i, s_j;
}; tin tine[100];
void back(int nr)
{
if(nr == 1)
{
for(i=c_nr; i > 1; i--)
fout << tine[i].i_i << ' ' << tine[i].i_j << ' ' << tine[i].s_i << ' ' << tine[i].s_j << '\n';
exit(0);
}
int iul, jul, copie, i_viit, j_viit, x, i, valoare;
for(i=1; i <= c_nr; i++)
{
if(activ[i] == 0)
{
for(x=1; x <= 4; x++)
{
iul = v[i].i + dir_i[x];
jul = v[i].j + dir_j[x];
i_viit = iul + dir_i[x];
j_viit = jul + dir_j[x];
if(M[iul][jul] != 0 && i_viit > 0 && i_viit <= linii && j_viit > 0 && j_viit <= coloane && M[i_viit][j_viit] == 0)
{
valoare = M[iul][jul];
activ[valoare] = 1;
tine[nr].i_i = v[i].i;
tine[nr].i_j = v[i].j;
tine[nr].s_i = i_viit;
tine[nr].s_j = j_viit;
copie = M[iul][jul];
M[iul][jul] = 0;
M[v[i].i][v[i].j] = 0;
v[i].i = i_viit;
v[i].j = j_viit;
M[i_viit][j_viit] = i;
back(nr-1);
M[i_viit][j_viit] = 0;
v[i].i -= 2*dir_i[x];
v[i].j -= 2*dir_j[x];
M[v[i].i][v[i].j] = i;
M[iul][jul] = copie;
activ[valoare] = 0;
}
}
}
}
}
int main()
{
fin >> linii >> coloane >> gladiatori;
c_nr = gladiatori;
for(i=1; i <= gladiatori; i++)
{
fin >> v[i].i >> v[i].j;
M[v[i].i][v[i].j] = i;
}
back(gladiatori);
}