Pagini recente » Cod sursa (job #1180467) | Cod sursa (job #2254150) | Cod sursa (job #243448) | Cod sursa (job #1298204) | Cod sursa (job #1601141)
#include <fstream>
#include <algorithm>
#define InFile "ferma3.in"
#define OutFile "ferma3.out"
#define N 405
using namespace std;
int n, m, nrzones;
char a[N][N],cu;
int b[N][N], dx[]={-1, 0, 1, 0}, dy[]={0, 1, 0, -1}, d[N*N];
bool c[N*N];
int i, j, k, l, sol, s, v, ma, p;
pair <int,int> soli;
void filll(int x, int y)
{
int i;
b[x][y]=nrzones;
d[nrzones]++;
for (i=0; i<4; i++)
if (!b[x+dx[i]][y+dy[i]] && a[x][y]==a[x+dx[i]][y+dy[i]])
filll (x+dx[i], y+dy[i]);
}
int main()
{
ifstream fin (InFile);
ofstream fout (OutFile);
fin >> v >> n >> m;
for (i=1; i<=n; i++)
fin >> a[i] + 1;
for (i=1; i<=n; i++)
for (j=1; j<=m; j++)
if (!b[i][j])
{
nrzones++;
filll (i,j);
if (ma < d[nrzones])
ma = d[nrzones];
}
for (i=1; i<=n; i++)
for (j=1; j<=m; j++)
{
char aux = a[i][j];
for (k=0; k<4; k++)
{
a[i][j] = a[i+dx[k]][j+dy[k]];
for (l=0, s=0; l<4; l++)
if (!c[b[i+dx[l]][j+dy[l]]]&&a[i][j] == a[i+dx[l]][j+dy[l]])
{
c[b[i+dx[l]][j+dy[l]]] = 1;
s += d[b[i+dx[l]][j+dy[l]]];
}
if (!c[b[i][j]])
s++;
if (s > sol)
{
sol = s;
cu = a[i][j];
soli = make_pair (i,j);
}
for (l=0; l<4; l++)
c[b[i+dx[l]][j+dy[l]]] = 0;
}
a[i][j] = aux;
}
if (v == 1)
fout << ma;
else
{
fout << soli.first << ' ' << soli.second;
fout << '\n';
fout << cu;
}
}