Pagini recente »
2020-03-19-clasa-7-tema-29
|
2022-01-12-clasa-5-concurs02-cursuri-performanta
|
Statistici Anca Badiu (heyanca)
|
Rating Dorneanu Diana (diana_dd03)
|
Cod sursă (job #643809)
Cod sursă (job
#643809)
#pragma warning(disable: 4996)
#include <stdio.h>
int n, m, k;
char arene[20][22][22];
int mutari[15][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");
}
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++;
return 1;
}
}
}
}
return (pas == k - 1);
}
int main() {
FILE* fin, * fout;
int 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 < 15; 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++) {
//printStage(i);
for (j = 0; j < 4; j++)
fprintf(fout, "%d ", mutari[i][j]);
fputc('\n', fout);
}
fclose(fout);
return 0;
}