Pagini recente » Cod sursa (job #471502) | Cod sursa (job #1876889) | Cod sursa (job #527027) | Rating Abdul Philip (Wrestling) | Cod sursa (job #435174)
Cod sursa(job #435174)
#include "stdio.h"
#define min(a,b,c) (((a)>(b))?(((b)>(c))?(c):(b)):(((a)>(c))?(c):(a)))
int main() {
FILE *f,*g;
int i,n,j;
f = fopen("figuri2.in", "r");
g = fopen("figuri2.out", "w");
fscanf(f, "%i\n", &n);//citesc n
//a = (unsigned char*)malloc(n*n*sizeof(char));
unsigned char a[n*n];
for (i=0;i<n;i++)
{
fgets((char*)(a+i*n), n+2, f);
for (j=n*i;j<n*(i+1);j++)
{
*(a+j) -= 48;
if (*(a+j)>0 && i>0 && j%n!=0)
if (*(a+j-1)>0 && *(a+j-n)>0 && *(a+j-n-1)>0)
*(a+j) = min(*(a+j-1), *(a+j-n), *(a+j-n-1))+1;//caut patrate
}
}
int maxim=0, nr_maxim=0;
for (i=0;i<n*n;i++)
if (*(a+i)>maxim) {maxim = *(a+i);nr_maxim = 1;}//numar patrate de latura maxima
else if (*(a+i) == maxim) {nr_maxim++;};
fprintf(g, "%i %i\n", maxim, (maxim)?nr_maxim:0);
for (i=0;i<n*n;i++)
if (*(a+i)>0)
{
*(a+i)=1;//resetez matricea
if (i>=2*n && i%n!=0 && i%n!=n-1)
if (*(a+i-n+1)>0 && *(a+i-n-1)>0 && *(a+i-n)>0 && *(a+i-2*n)>0)
*(a+i) = min(*(a+i-n-1), *(a+i-n+1), *(a+i-2*n))+1;//caut romburi
}
maxim=0, nr_maxim=0;
for (i=0;i<n*n;i++)
if (*(a+i)>maxim) {maxim = *(a+i);nr_maxim = 1;}//numar patrate de latura maxima
else if (*(a+i) == maxim) {nr_maxim++;};
fprintf(g, "%i %i\n", maxim, (maxim)?nr_maxim:0);
fclose(f);
fclose(g);
/*for (i=0;i<n;i++)
{
for (j=0;j<n;j++)
printf("%i", *(a+i*n+j));
printf("\n");
}*/
return 0;
}