Source code for submission s498

fs.cpp

  1. #include <iostream>
  2. #include <set>
  3. #include <stdio.h>
  4. #include <utility>
  5. #include <map>
  6. #include <string>
  7. #include <sstream>
  8. #include <algorithm>
  9. using namespace std;
  10.  
  11. map<char,string> code;
  12. map<string, char> rcode;
  13.  
  14. int main(){
  15. code.insert(make_pair('A',".-"));
  16. rcode.insert(make_pair(".-",'A'));
  17. code.insert(make_pair('B',"-..."));
  18. rcode.insert(make_pair("-...",'B'));
  19. code.insert(make_pair('C',"-.-."));
  20. rcode.insert(make_pair("-.-.",'C'));
  21. code.insert(make_pair('D',"-.."));
  22. rcode.insert(make_pair("-..",'D'));
  23. code.insert(make_pair('E',"."));
  24. rcode.insert(make_pair(".",'E'));
  25. code.insert(make_pair('F',"..-."));
  26. rcode.insert(make_pair("..-.",'F'));
  27. code.insert(make_pair('G',"--."));
  28. rcode.insert(make_pair("--.",'G'));
  29. code.insert(make_pair('H',"...."));
  30. rcode.insert(make_pair("....",'H'));
  31. code.insert(make_pair('I',".."));
  32. rcode.insert(make_pair("..",'I'));
  33. code.insert(make_pair('J',".---"));
  34. rcode.insert(make_pair(".---",'J'));
  35. code.insert(make_pair('K',"-.-"));
  36. rcode.insert(make_pair("-.-",'K'));
  37. code.insert(make_pair('L',".-.."));
  38. rcode.insert(make_pair(".-..",'L'));
  39. code.insert(make_pair('M',"--"));
  40. rcode.insert(make_pair("--",'M'));
  41. code.insert(make_pair('N',"-."));
  42. rcode.insert(make_pair("-.",'N'));
  43. code.insert(make_pair('O',"---"));
  44. rcode.insert(make_pair("---",'O'));
  45. code.insert(make_pair('P',".--."));
  46. rcode.insert(make_pair(".--.",'P'));
  47. code.insert(make_pair('Q',"--.-"));
  48. rcode.insert(make_pair("--.-",'Q'));
  49. code.insert(make_pair('R',".-."));
  50. rcode.insert(make_pair(".-.",'R'));
  51. code.insert(make_pair('S',"..."));
  52. rcode.insert(make_pair("...",'S'));
  53. code.insert(make_pair('T',"-"));
  54. rcode.insert(make_pair("-",'T'));
  55. code.insert(make_pair('U',"..-"));
  56. rcode.insert(make_pair("..-",'U'));
  57. code.insert(make_pair('V',"...-"));
  58. rcode.insert(make_pair("...-",'V'));
  59. code.insert(make_pair('W',".--"));
  60. rcode.insert(make_pair(".--",'W'));
  61. code.insert(make_pair('X',"-..-"));
  62. rcode.insert(make_pair("-..-",'X'));
  63. code.insert(make_pair('Y',"-.--"));
  64. rcode.insert(make_pair("-.--",'Y'));
  65. code.insert(make_pair('Z',"--.."));
  66. rcode.insert(make_pair("--..",'Z'));
  67. code.insert(make_pair('_',"..--"));
  68. rcode.insert(make_pair("..--",'_'));
  69. code.insert(make_pair(',',".-.-"));
  70. rcode.insert(make_pair(".-.-",','));
  71. code.insert(make_pair('.',"---."));
  72. rcode.insert(make_pair("---.",'.'));
  73. code.insert(make_pair('?',"----"));
  74. rcode.insert(make_pair("----",'?'));
  75.  
  76. string line;
  77. while(cin >> line) {
  78. stringstream ss;
  79. string sl;
  80. for (int i = 0; i < line.length(); ++i) {
  81. ss << code[line[i]];
  82. sl += code[line[i]].length();
  83. }
  84. reverse(sl.begin(), sl.end());
  85. string mchar, res;
  86. string str = ss.str();
  87. int end = 0;
  88. for (int i = 0; i < sl.length(); ++i) {
  89. mchar = str.substr(end, sl[i]);
  90. end += sl[i];
  91. res += rcode[mchar];
  92. }
  93. cout << res << "\n";
  94. }
  95.  
  96. return 0;
  97. }
  98.