Pagini recente » Cod sursa (job #117719) | Cod sursa (job #3345714) | Cod sursa (job #3273619) | Cod sursa (job #1179340) | Cod sursa (job #1308918)
#include <stdio.h>
int a[1001][1001];
int b[1001][1001];
int ct[1001];
int n;
int minim(int a,int b,int c)
{
if(a>b)
{
if(b>c) return c;
return b;
}
else
{
if(a>c) return c;
return a;
}
}
int main()
{
FILE *fin,*fout;
fin=fopen("custi.in","r");
fout=fopen("custi.out","w");
fscanf(fin,"%d",&n);
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
fscanf(fin,"%d",&b[i][j]);
if(b[i][j]==1) ct[1]++;
}
}
for(int i=1;i<=n;i++)
{
a[i][1]=b[i][1];
a[1][i]=b[1][i];
}
for(int i=2;i<=n;i++)
{
for(int j=2;j<=n;j++)
{
if(b[i][j]==1)
{
a[i][j]=minim(a[i-1][j],a[i-1][j-1],a[i][j-1])+1;
if(a[i][j]!=1)
{
ct[a[i][j]]++;
}
}
else a[i][j]=0;
}
}
int s=0;
for(int i=2;i<=n;i++)
{
s+=ct[i];
}
int temp;
fprintf(fout,"%d\n",ct[1]);
for(int i=2;i<=n;i++)
{
temp=ct[i];
ct[i]=s;
s-=temp;
fprintf(fout,"%d\n",ct[i]);
}
fclose(fin);
fclose(fout);
return 0;
}