Source code for submission s514

fs.cpp

  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cstdlib>
  4. #include <vector>
  5. #include <map>
  6. #include <set>
  7. #include <string>
  8. #include <cmath>
  9. #include <algorithm>
  10. #include <queue>
  11.  
  12. using namespace std;
  13.  
  14. map<char, string> morse;
  15. map<string, char> morse2;
  16.  
  17. int main()
  18. {
  19. morse['A'] = ".-";
  20. morse['B'] = "-...";
  21. morse['C'] = "-.-.";
  22. morse['D'] = "-..";
  23. morse['E'] = ".";
  24. morse['F'] = "..-.";
  25. morse['G'] = "--.";
  26. morse['H'] = "....";
  27. morse['I'] = "..";
  28. morse['J'] = ".---";
  29. morse['K'] = "-.-";
  30. morse['L'] = ".-..";
  31. morse['M'] = "--";
  32. morse['N'] = "-.";
  33. morse['O'] = "---";
  34. morse['P'] = ".--.";
  35. morse['Q'] = "--.-";
  36. morse['R'] = ".-.";
  37. morse['S'] = "...";
  38. morse['T'] = "-";
  39. morse['U'] = "..-";
  40. morse['V'] = "...-";
  41. morse['W'] = ".--";
  42. morse['X'] = "-..-";
  43. morse['Y'] = "-.--";
  44. morse['Z'] = "--..";
  45. morse['_'] = "..--";
  46. morse[','] = ".-.-";
  47. morse['.'] = "---.";
  48. morse['?'] = "----";
  49.  
  50. morse2[".-"] = 'A';
  51. morse2["-..."] = 'B';
  52. morse2["-.-."] = 'C';
  53. morse2["-.."] = 'D';
  54. morse2["."] = 'E';
  55. morse2["..-."] = 'F';
  56. morse2["--."] = 'G';
  57. morse2["...."] = 'H';
  58. morse2[".."] = 'I';
  59. morse2[".---"] = 'J';
  60. morse2["-.-"] = 'K';
  61. morse2[".-.."] = 'L';
  62. morse2["--"] = 'M';
  63. morse2["-."] = 'N';
  64. morse2["---"] = 'O';
  65. morse2[".--."] = 'P';
  66. morse2["--.-"] = 'Q';
  67. morse2[".-."] = 'R';
  68. morse2["..."] = 'S';
  69. morse2["-"] = 'T';
  70. morse2["..-"] = 'U';
  71. morse2["...-"] = 'V';
  72. morse2[".--"] = 'W';
  73. morse2["-..-"] = 'X';
  74. morse2["-.--"] = 'Y';
  75. morse2["--.."] = 'Z';
  76. morse2["..--"] = '_';
  77. morse2[".-.-"] = ',';
  78. morse2["---."] = '.';
  79. morse2["----"] = '?';
  80.  
  81. unsigned int len[1020];
  82. char encoded[4020];
  83. char decoded[1020];
  84. uint encoded_len;
  85. string line;
  86. while(getline(cin, line))
  87. {
  88. encoded_len = 0;
  89. for (uint i = 0; i < line.size(); ++i)
  90. {
  91. string& ch = morse[line[i]];
  92. len[i] = ch.size();
  93. for (uint j = 0; j < ch.size(); ++j)
  94. {
  95. encoded[encoded_len++] = ch[j];
  96. }
  97. }
  98. reverse(len, len + line.size());
  99. uint encoded_pos = 0;
  100. for (uint i = 0; i < line.size(); ++i)
  101. {
  102. string ch;
  103. for (uint j = 0; j < len[i]; ++j)
  104. {
  105. ch.push_back(encoded[encoded_pos++]);
  106. }
  107. decoded[i] = morse2[ch];
  108. }
  109. decoded[line.size()] = 0;
  110. printf("%s\n", decoded);
  111. }
  112. }
  113.