Pagini recente » Cod sursa (job #963719) | Cod sursa (job #2053282) | Cod sursa (job #2671235) | Cod sursa (job #2555530) | Cod sursa (job #1980071)
#include <bits/stdc++.h>
const int DIR = 4;
const int MAXN = 500;
using namespace std;
int lin [DIR + 1] = {0, 0, -1, 0, 1};
int col [DIR + 1] = {0, 1, 0, -1, 0};
char a[MAXN + 1][MAXN + 1];
int val[MAXN + 1][MAXN + 1];
char fab[MAXN + 1][MAXN + 1];
char viz[MAXN + 1][MAXN + 1];
int main()
{
FILE *fin, *fout;
int p, n, m, i, j, x, y, nr, ii, jj, cate, iii, jjj, fav, s, max;
fin = fopen ("arrows.in", "r");
fout = fopen ("arrows.out", "w");
fscanf (fin, "%d%d%d", &p, &n, &m);
for (i = 1; i <= n; i++)
for (j = 1; j <= m; j++)
fscanf (fin, "%d", &a[i][j]);
fscanf (fin, "%d%d", &x, &y);
for (i = 0; i <= n + 1; i++)
viz[i][m + 1] = viz[i][0] = 1;
for (i = 0; i <= m + 1; i++)
viz[n + 1][i] = viz[0][i] = 1;
for (i = 1; i <= n; i++)
for (j = 1; j <= m; j++)
if (val[i][j] == 0) {
ii = i;
jj = j;
cate = 0;
while (viz[ii][jj] == 0) {
nr = a[ii][jj];
viz[ii][jj] = 1;
ii = ii + lin[nr];
jj = jj + col[nr];
cate++;
}
if (ii > 0 && ii <= n && jj > 0 && jj <= m)
fav = 1000;
else
fav = 1;
iii = ii;
jjj = jj;
ii = i;
jj = j;
while ( ii != iii || jj != jjj) {
nr = a[ii][jj];
val[i][j] = cate * fav;
fab[i][j] = fav / 1000;
ii = ii + lin[nr];
jj = jj + col[nr];
cate--;
}
}
if (p == 1) {
fprintf (fout, "%d", val[x][y]);
}
else if (p == 2) {
s = 0;
for (i = 1; i <= n; i++)
for (j = 1; j <= m; j++)
s = s + fab[i][j];
fprintf (fout, "%d", s);
}
else {
max = 0;
for (i = 1; i <= n; i++)
for (j = 1; j <= m; j++)
if (val[i][j] > max)
max = val[i][j];
fprintf (fout, "%d", max);
}
fclose (fin);
fclose (fout);
return 0;
}