fs.cpp
#include <iostream>
#include <string>
using namespace std;
const char M1[]="ET";
const char M2[]="IANM";
const char M3[]="SURWDKGO";
const char M4[]="HVF_L,PJBXCYZQ.?";
#define o morse[m++]=0;
#define a morse[m++]=1;
#define l(a) lens[i]=a;break;
#define x break;
string coding(string input) {
char morse[5000];
int m=0;
char lens[1010];
int inlen=input.size();
int i,j;
unsigned int code;
string output;
for(i=0;i<inlen;i++) {
switch(input[i]) {
case 'A': o a l(2)
case 'B': a o o o l(4)
case 'C': a o a o l(4)
case 'D': a o o l(3)
case 'E': o l(1)
case 'F': o o a o l(4)
case 'G': a a o l(3)
case 'H': o o o o l(4)
case 'I': o o l(2)
case 'J': o a a a l(4)
case 'K': a o a l(3)
case 'L': o a o o l(4)
case 'M': a a l(2)
case 'N': a o l(2)
case 'O': a a a l(3)
case 'P': o a a o l(4)
case 'Q': a a o a l(4)
case 'R': o a o l(3)
case 'S': o o o l(3)
case 'T': a l(1)
case 'U': o o a l(3)
case 'V': o o o a l(4)
case 'W': o a a l(3)
case 'X': a o o a l(4)
case 'Y': a o a a l(4)
case 'Z': a a o o l(4)
case '_': o o a a l(4)
case ',': o a o a l(4)
case '.': a a a o l(4)
case '?': a a a a l(4)
}
}
m=0;
for (i=inlen-1; i>=0; i--) {
j=lens[i];
code=0;
while(j--) {
code <<= 1;
code += morse[m++];
}
switch(lens[i]) {
case 1:
output+=M1[code];
break;
case 2:
output+=M2[code];
break;
case 3:
output+=M3[code];
break;
case 4:
output+=M4[code];
break;
}
}
return output;
}
int main() {
string input;
while(cin >> input) {
cout << coding(input) << endl;
}
}