fs.cpp
#include <iostream>
#include <stdio.h>
#include <algorithm>
#include <vector>
#include <string>
#include <sstream>
using namespace std;
int main(){
vector<string> morse;
morse.push_back(".-");
morse.push_back("-...");
morse.push_back("-.-.");
morse.push_back("-..");
morse.push_back(".");
morse.push_back("..-.");
morse.push_back("--.");
morse.push_back("....");
morse.push_back("..");
morse.push_back(".---");
morse.push_back("-.-");
morse.push_back(".-..");
morse.push_back("--");
morse.push_back("-.");
morse.push_back("---");
morse.push_back(".--.");
morse.push_back("--.-");
morse.push_back(".-.");
morse.push_back("...");
morse.push_back("-");
morse.push_back("..-");
morse.push_back("...-");
morse.push_back(".--");
morse.push_back("-..-");
morse.push_back("-.--");
morse.push_back("--..");
string msg;
while(cin >> msg){
vector<int> nums;
stringstream codemsg;
for(unsigned int i = 0;i<msg.length();i++){
if(msg[i]=='_'){
codemsg << "..--";
nums.push_back(4);
}else if(msg[i]==','){
codemsg << ".-.-";
nums.push_back(4);
}else if(msg[i]=='.'){
codemsg << "---.";
nums.push_back(4);
}else if(msg[i]=='?'){
codemsg << "----";
nums.push_back(4);
}else {
codemsg << morse[msg[i]-'A'];
nums.push_back(morse[msg[i]-'A'].length());
}
}
stringstream ss;
msg = codemsg.str();
for(int i = nums.size()-1;i>=0;i--){
string code = msg.substr(0,nums[i]);
msg = msg.substr(nums[i]);
if(code=="..--"){
ss << '_';
}else if(code==".-.-"){
ss << ',';
}else if(code=="---."){
ss << '.';
}else if(code=="----"){
ss << '?';
}else {
for(int j = 0; j < 26;j++){
if(morse[j] == code){
ss << (char)('A' + j);
break;
}
}}
}
cout << ss.str() << endl;
}
}