zoj3383
来源:互联网 发布:东华软件股票 编辑:程序博客网 时间:2024/05/19 22:48
一道做到我流泪又流汗的题!!!题目什么也不说就让你看sample,真实。。。。特别是w和h的交换,哎,无语。。。。
#include<iostream>
#include<string>
using namespace std;
char ss[200];
string a[305][305];
int b[305][305];
int main(){
// freopen("in.txt","r",stdin);
// freopen("out.txt","w",stdout);
while(scanf("%s",ss)!=EOF){
cout<<ss<<endl;
int w=0,h=0;
char* u=ss;
while(*u!='x'){
w=w*10+(*u-'0');
u++;}
u++;
while(*u!='/0'){
h=h*10+(*u-'0');
u++;}
int sum=0;
memset(b,0,sizeof(b));
int t=w;w=h;h=t;
for(int i=0;i<w;i++){
for(int j=0;j<h;j++){
cin>>a[i][j];
int read=0;
if('0'<=a[i][j][1]&&a[i][j][1]<='9')
read=read*16+(a[i][j][1]-'0');
else{read=read*16+(a[i][j][1]-'A'+10);}
if('0'<=a[i][j][2]&&a[i][j][2]<='9')
read=read*16+(a[i][j][2]-'0');
else {read=read*16+(a[i][j][2]-'A'+10);}
int green=0;
if('0'<=a[i][j][3]&&a[i][j][3]<='9')
green=green*16+(a[i][j][3]-'0');
else{green=green*16+(a[i][j][3]-'A'+10);}
if('0'<=a[i][j][4]&&a[i][j][4]<='9')
green=green*16+(a[i][j][4]-'0');
else{green=green*16+(a[i][j][4]-'A'+10);}
int blue=0;
if('0'<=a[i][j][5]&&a[i][j][5]<='9')
blue=blue*16+(a[i][j][5]-'0');
else{blue=blue*16+(a[i][j][5]-'A'+10);}
if('0'<=a[i][j][6]&&a[i][j][6]<='9')
blue=blue*16+(a[i][j][6]-'0');
else{blue=blue*16+(a[i][j][6]-'A'+10);}
b[i][j]=(read*11+green*16+blue*5)/32;
sum+=b[i][j];
}
}
int temp=sum/(w*h);
temp=(192+2*temp)/3;
for(int i=0;i<w;i++){
for(int j=0;j<h;j++){
if(b[i][j]>=temp) cout<<" ";
else cout<<"9";
if(j<h-1) cout<<" ";
}
cout<<endl;
}
}
return 0;}