fs.cpp
#include <iostream>
#include <string>
#include <vector>
#include <map>
using namespace std;
int main(){
map<string,char> m;
m[".-"]='A';
m["-..."]='B';
m["-.-."]='C';
m["-.."]='D';
m["."]='E';
m["..-."]='F';
m["--."]='G';
m["...."]='H';
m[".."]='I';
m[".---"]='J';
m["-.-"]='K';
m[".-.."]='L';
m["--"]='M';
m["-."]='N';
m["---"]='O';
m[".--."]='P';
m["--.-"]='Q';
m[".-."]='R';
m["..."]='S';
m["-"]='T';
m["..-"]='U';
m["...-"]='V';
m[".--"]='W';
m["-..-"]='X';
m["-.--"]='Y';
m["--.."]='Z';
m["..--"]='_';
m["---."]='.';
m[".-.-"]=',';
m["----"]='?';
map<char,string> r;
r['A']=".-";
r['B']="-...";
r['C']="-.-.";
r['D']="-..";
r['E']=".";
r['F']="..-.";
r['G']="--.";
r['H']="....";
r['I']="..";
r['J']=".---";
r['K']="-.-";
r['L']=".-..";
r['M']="--";
r['N']="-.";
r['O']="---";
r['P']=".--.";
r['Q']="--.-";
r['R']=".-.";
r['S']="...";
r['T']="-";
r['U']="..-";
r['V']="...-";
r['W']=".--";
r['X']="-..-";
r['Y']="-.--";
r['Z']="--..";
r['_']="..--";
r['.']="---.";
r[',']=".-.-";
r['?']="----";
string s;
vector<int> v;
while(cin>>s){
v.clear();
string translate="";
for(int i=0;i<s.size();i++){
translate+=r[s[i]];
v.push_back(r[s[i]].size());
}
string out="";
string morse;
int index=0;
for(int i=v.size()-1;i>=0;i--){
morse="";
//nacte pocet znaku
for (int j=0;j<v[i];j++){
morse+=translate[index++];
}
out+=m[morse];
}
cout<<out<<endl;
}
return 0;
}