Pagini recente » Cod sursa (job #2010637) | Rezultatele filtrării | Istoria paginii runda/ichb-scoala-2014-10/clasament | Cod sursa (job #504708) | Cod sursa (job #437066)
Cod sursa(job #437066)
#include<stdio.h>
int a[255][255], p[255][255], r[255][255], v[255];
int min(int a, int b, int c){ // functia calculeaza maximul dintre 3 numere a, b si c
if(a < b && a < c)
return a;
if(b < c)
return b;
return c;
}
int main() {
int i, j, N, LP = 0, NP = 0, LR = 0, NR = 0;
FILE *f = fopen("figuri2.in","r");
FILE *g = fopen("figuri2.out","w");
fscanf(f, "%d", &N);
for(i = 0; i < N; i ++)
fscanf(f, "%d", &v[i]);
for(i = 0; i < N; i ++) {
j = N - 1;
while(v[i] > 0) {
a[i][j] = v[i] % 10 ;
j = j - 1;
v[i] = v[i] / 10;
}
}
for(i = 0; i < N; i ++)
for(j = 0; j < N; j ++) {
p[i][j] = a[i][j];
r[i][j] = a[i][j];
}
for(i = 0; i < N; i ++)
for(j = 0; j < N; j ++) {
if(p[i][j] == 1) p[i][j] = min(p[i-1][j], p[i-1][j-1], p[i][j-1]) + 1;
if( p[i][j] > LP ) LP = p[i][j];
}
for(i = 0; i < N; i ++)
for(j = 0; j < N; j ++)
if( p[i][j] == LP ) NP ++;
for(i = 0; i < N; i ++)
for(j = 0; j < N; j ++) {
if(r[i][j] == 1) r[i][j] = min(r[i-1][j-1], r[i-1][j+1], r[i-2][j]) + 1;
if( r[i][j] > LR ) LR = r[i][j];
}
for(i = 0; i < N; i ++)
for(j = 0; j < N; j ++)
if( r[i][j] == LR ) NR ++;
printf("%d %d", LR, NR);
fprintf(g, "%d %d", LP, NP);
fprintf(g, "\n");
fprintf(g, "%d %d", LR, NR);
}