Pagini recente » Cod sursa (job #2066936) | Istoria paginii utilizator/adinutica | Profil AeroH | Statistici Costan Daniel Cristian (CostanDaniel) | Cod sursa (job #388514)
Cod sursa(job #388514)
#include <cstdio>
#define NMAX 257
int e[NMAX][NMAX];
int N;
int lungime=0;
int identic(int l1 ,int c1,int l2,int c2)
{
int a=e[l1][c1];
for(int i=l1;i<=l2;i++)
for(int j=c1;j<=c2;j++)
if(e[i][j]!=a)
return 0;
return 1;
}
void compresie(int l1,int c1,int l2,int c2)
{
if(identic(l1,c1,l2,c2))
{
lungime+=2;
return ;
}
lungime+=1;
compresie((l1+l2)/2,c1,l2,(c1+c2)/2);
compresie(l1,c1,(l1+l2)/2,(c1+c2)/2);
compresie((l1+l2)/2,(c1+c2)/2,l2,c2);
compresie(l1,(c1+c2)/2,(l1+l2)/2,c2);
}
int main()
{
freopen("compresie.in","r",stdin);
freopen("compresie.out","w",stdout);
scanf("%d",&N);
for(int i=1;i<=N;i++)
for(int j=1;j<=N;j++)
scanf("%d",&e[i]);
compresie(1,1,N,N);
printf("%d",lungime);
return 0;
}