Cod sursa(job #316155)

Utilizator doru.nituNitu Doru Constantin doru.nitu Data 18 mai 2009 17:29:36
Problema Piese Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include<stdio.h>
int a[501][501],b[10],i,j,k,mini,n,i1,m,l,c;
int putmin(int a)
{ for(i1=8;i1>=0&&b[i1]>a;--i1);
  return i1;
}
int min(int a,int b)
{ if(a<b) return a;
  return b;
}
int main()
{ freopen("piese.in","r",stdin);
  freopen("piese.out","w",stdout);
  scanf("%d %d",&n,&m);
  b[0]=1;
  for(i=1;i<=8;i++) b[i]=2*b[i-1];
  i=1;
  j=1;
  while(i<=n) { k=putmin(min(n-i+1,m-j+1));
                      mini++;
                      for(l=i;l<=i+b[k]-1;l++)
                          for(c=j;c<=j+b[k]-1;c++)  a[l][c]=mini;  
                      j=j+b[k];
                      if(j>m) { j=1;
                                i=i+b[k];
                                if(i<=n)
                                while(a[i][j]) ++j;
                              }
                    }
 printf("%d\n",mini);
 for(i=1;i<=n;i++)
     { for(j=1;j<=m;j++) printf("%d ",a[i][j]);
       printf("\n");
     }
 fclose(stdin);
 fclose(stdout);
 return 0;
}