Pagini recente »
Rating Craciun Ioan Flaviu (flaviu_2001)
|
Rating Andrei Miru (AMiru)
|
Monitorul de evaluare
|
Istoria paginii utilizator/tudosierazvan
|
Cod sursă (job #643776)
Cod sursă (job
#643776)
#pragma warning(disable: 4996)
#include <stdio.h>
int n, m;
char arene[14][22][22];
int mutari[14][4], dim;
int diri[4] = { -1, 0, 1, 0 };
int dirj[4] = { 0, 1, 0, -1 };
void copyStage(int pas) {
int i, j;
for (i = 1; i <= n; i++)
for (j = 1; j <= m; j++)
arene[pas + 1][i][j] = arene[pas][i][j];
}
void printStage(int pas) {
int i, j;
for (i = 1; i <= n; i++) {
for (j = 1; j <= m; j++)
printf("%d ", arene[pas][i][j]);
printf("\n");
}
}
int getSolution(int pas) {
int i, j, dir, lin, col, lin2, col2, cnt = 0, cntmut = 0, ok;
for (i = 1; i <= n; i++)
for (j = 1; j <= m; j++)
if (arene[pas][i][j]) {
cnt++;
for (dir = 0; dir < 4; dir++) {
lin = i + diri[dir];
col = j + dirj[dir];
lin2 = lin + diri[dir];
col2 = col + dirj[dir];
if (arene[pas][lin][col] == 1 && arene[pas][lin2][col2] == 0) {
cntmut++;
copyStage(pas);
arene[pas + 1][lin2][col2] = 1;
arene[pas + 1][lin][col] = arene[pas + 1][i][j] = 0;
ok = getSolution(pas + 1);
if (ok) {
mutari[pas][0] = i;
mutari[pas][1] = j;
mutari[pas][2] = lin2;
mutari[pas][3] = col2;
dim++;
dir = 4;
i = n;
j = m;
}
}
}
}
return !(cnt > 1 && cntmut == 0);
}
int main() {
FILE* fin, * fout;
int k, i, j, x, y;
fin = fopen("immortal.in", "r");
fscanf(fin, "%d%d%d", &n, &m, &k);
for (i = 0; i < k; i++) {
fscanf(fin, "%d%d", &x, &y);
arene[0][x][y] = 1;
}
fclose(fin);
for (i = 0; i < 14; i++) {
for (x = 0; x < n + 2; x++)
arene[i][x][0] = arene[i][x][m + 1] = -1;
for (y = 0; y < m + 2; y++)
arene[i][0][y] = arene[i][n + 1][y] = -1;
}
getSolution(0);
fout = fopen("immortal.out", "w");
for (i = 0; i < dim; i++) {
for (j = 0; j < 4; j++)
fprintf(fout, "%d ", mutari[i][j]);
fputc('\n', fout);
}
fclose(fout);
return 0;
}