#include <cmath> #include <cstring> #include <iostream> #define INF 2000000000 using namespace std; int n, m; int vals[20], nrSecv; char secv[20]; void process (char *); inline int convertHexa (char, char); void generareSecv(); int main(){ int i, j; char s[100]; generareSecv(); cin>>n>>m; for (i=1; i<=n; ++i){ for (j=1; j<=m; ++j){ cin>>s; process(s); } cout<<'\n'; } return 0; } void process (char *s){ char cp[100]; int i, lgcp=0, j, difMin, pozMin, valPIXEL; cp[0]=s[0]; for (i=1; i<=6; i+=2){ if (s[i]==s[i+1]){ cp[++lgcp] = s[i]; continue; } valPIXEL = convertHexa (s[i], s[i+1]); difMin=INF; for (j=0; j<nrSecv; ++j) if (abs(vals[j] - valPIXEL)<difMin){ difMin = abs(vals[j]-valPIXEL); pozMin = j; } cp[++lgcp]=secv[pozMin]; } cp[4]=0; cout<<cp<<' '; } inline int convertHexa (char s1, char s2){ int values[300]; int i; for (i=0; i<10; ++i) values[i+'0']=i; for (i=10; i<=15; ++i) values['A'+i-10] = i; return (values[s2] + 16*values[s1]); } void generareSecv (){ int i; for (i=0; i<=9; ++i){ secv[nrSecv]=i+'0'; vals[nrSecv++] = convertHexa (i+'0', i+'0'); } for (i=10; i<=15; ++i){ secv[nrSecv]='A'+i-10; vals[nrSecv++] = convertHexa ('A'+i-10, 'A'+i-10); } return; }