Pagini recente » Cod sursa (job #1734086) | Cod sursa (job #2048893) | Cod sursa (job #302235) | Cod sursa (job #433345) | Cod sursa (job #441506)
Cod sursa(job #441506)
#include <stdio.h>
#include <stdlib.h>
int m[255][255], aux1[255][255], aux2[255][255];
int vecin (int i, int j)
{
if (i >= 0 && j >= 0) return m[i][j];
return 0;
}
int vecin1 (int i, int j)
{
if (i >= 0 && j >= 0) return aux1[i][j];
return 0;
}
int vecin2 (int i, int j)
{
if (i >= 0 && j >= 0) return aux2[i][j];
return 0;
}
int minim (int n, int m, int p)
{
int min;
min = n;
if (min > m) min = m;
if (min > p) min = p;
return min;
}
int main()
{
FILE *f, *g;
int N, i, j, min; //N = nr de linii si coloane
int LP, NP = 0, LR, NR = 0;
f = fopen("figuri2.in", "r");
g = fopen("figuri2.out", "w");
fscanf(f, "%d", &N);
for (i=0; i<N; i++)
for (j=0; j<N; j++)
{
m[i][j] = 0;
aux1[i][j] = 0;
aux2[i][j] = 0;
}
for (i=0; i<N; i++)
{
for (j=0; j<N; j++)
{
fscanf(f, "%01d", &m[i][j]);
}
}
for (i=0; i<N; i++)
for (j=0; j<N; j++)
{
if (m[i][j] == 1)
{
if(vecin(i, j-1) == 1 && vecin (i-1, j-1) == 1 && vecin (i-1, j) == 1)
aux1[i][j] = minim (vecin1 (i, j-1), vecin1 (i-1, j-1), vecin1 (i-1, j)) + 1;
else aux1[i][j] = 1;
if(vecin(i-1, j-1) == 1 && vecin(i-1, j) == 1 && vecin(i-1, j+1) == 1)
{
min = minim(vecin2(i-1, j-1), vecin2(i-1, j), vecin2(i-1, j+1));
if(vecin(i-2*min, j) == 1)
aux2[i][j] = min + 1;
else
aux2[i][j] = min;
}
else aux2[i][j] = 1;
}
else
{
aux1[i][j] = 0;
aux2[i][j] = 0;
}
}
LP = aux1[0][0];
LR = aux2[0][0];
for (i=0; i<N; i++)
for (j=0; j<N; j++)
{
if (LP < aux1[i][j]) LP = aux1[i][j];
if (LR < aux2[i][j]) LR = aux2[i][j];
}
for (i=0; i<N; i++)
for (j=0; j<N; j++)
{
if (aux1[i][j] == LP) NP++;
if (aux2[i][j] == LR) NR++;
}
fprintf(g, "%d %d\n%d %d\n", LP, NP, LR, NR);
fclose(f);
fclose(g);
return 0;
}