zoj 3383 Shiro Kuro

http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3383

 

#include <stdio.h>

#define MAXN 302

int w,h,red,green,blue,bitmap[MAXN][MAXN];
int threshold,grayscale,sum_of_grayscale,average_grayscale;

int calc(char a,char b)
{
    int c,d;
    if(a>='0' && a<='9') c=(int)(a-'0');
    else c=(int)(a-'A'+10);
    if(b>='0' && b<='9') d=(int)(b-'0');
    else d=(int)(b-'A'+10);
    //  printf("c=%d d=%d\n",c,d);
    return c*16+d;
}

int main()
{
    int i,j;
    char a,b;
    while(scanf("%d%*c%d",&w,&h)!=EOF)
    {
        //      printf("w=%d h=%d\n",w,h);
        getchar();//'\n'
        sum_of_grayscale=0;
        for(i=0; i<h; i++)
        {
            for(j=0; j<w; j++)
            {
                getchar();//'#'

                a=getchar();
                b=getchar();
                red=calc(a,b);

                a=getchar();
                b=getchar();
                green=calc(a,b);

                a=getchar();
                b=getchar();
                blue=calc(a,b);

                getchar();//' ' or '\n'

                bitmap[i][j]=(11*red+16*green+5*blue)/32;
                //        printf("bitmap[%d][%d]=%d\n",i,j,bitmap[i][j]);
                sum_of_grayscale+=bitmap[i][j];
            }
        }
        average_grayscale=sum_of_grayscale/(w*h);
        threshold=(192+2*average_grayscale)/3;
        printf("%dx%d\n",w,h);
        for(i=0; i<h; i++)
        {
            for(j=0; j<w; j++)
            {
                if(bitmap[i][j]<threshold)//black-9
                {
                    if(!j) printf("9");
                    else printf(" 9");
                }
                else//white-' '
                {
                    if(!j) printf(" ");
                    else printf("  ");
                }
            }
            printf("\n");
        }
    }
    return 0;
}

 

posted @ 2010-08-22 21:44  菜到不得鸟  阅读(221)  评论(0)    收藏  举报