Cod sursa(job #978275)

Utilizator bugyBogdan Vlad bugy Data 28 iulie 2013 15:52:45
Problema Sum Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <stdio.h>
#include <string.h>
#define dim 1005
using namespace std;

int A[dim][dim],B[dim][dim],C[dim][dim],N,i,j,MIN,k,v[dim];
char s[3*dim];

int min(int a, int b, int c)
{
	if( a <= b && a <= c )
		return a;
	else if( b <= a && b <= c )
		return b;
	return c;
}

int main()
{
	FILE *f=fopen("custi.in","r"), *g=fopen("custi.out","w");
	
	fscanf(f,"%d\n",&N);
	
	for( i = 1; i <= N; i++ )
	{
		C[1][i] = 1;
		C[2][i] = 1;	
	}
	
	for( i = 1; i <= N; i++ )
	{
		fgets(s,dim,f);
		for( j = 1; j <= N; j++ )
		{
			if( s[j*2-2] == '1' )	
			{
				v[1]++;
				A[ i ][ j ] = A[ i ][ j - 1 ] + 1;
				B[ i ][ j ] = B[ i - 1 ][ j ] + 1; 
			}
			C[i+2][j] = 1;
			
			MIN = min(A[i][j],B[i][j],C[i][j]);
			for( k = 2; k <= MIN; k++ )
				v[ k ] ++;
			C[ i+1 ][ j+1 ] = MIN + 1;		
		}
	}
	fclose(f);
	
	for( i = 1; i <= N; i++ )
		fprintf(g,"%d\n",v[i]);
	
	fclose(g);
return 0;
}