Source code for submission s637

fs.cpp

  1. #include <cstdio>
  2. #include <cmath>
  3. #include <iostream>
  4. #include <string>
  5. #include <map>
  6. #include <cstdlib>
  7.  
  8. using namespace std;
  9.  
  10.  
  11. int main()
  12. {
  13. std::map<char, std::string> m1;
  14. std::map<std::string, char> m2;
  15. m1.insert(std::pair<char, std::string>('A', ".-"));
  16. m1.insert(std::pair<char, std::string>('B', "-..."));
  17. m1.insert(std::pair<char, std::string>('C', "-.-."));
  18. m1.insert(std::pair<char, std::string>('D', "-.."));
  19. m1.insert(std::pair<char, std::string>('E', "."));
  20. m1.insert(std::pair<char, std::string>('F', "..-."));
  21. m1.insert(std::pair<char, std::string>('G', "--."));
  22. m1.insert(std::pair<char, std::string>('H', "...."));
  23. m1.insert(std::pair<char, std::string>('I', ".."));
  24. m1.insert(std::pair<char, std::string>('J', ".---"));
  25. m1.insert(std::pair<char, std::string>('K', "-.-"));
  26. m1.insert(std::pair<char, std::string>('L', ".-.."));
  27. m1.insert(std::pair<char, std::string>('M', "--"));
  28. m1.insert(std::pair<char, std::string>('N', "-."));
  29. m1.insert(std::pair<char, std::string>('O', "---"));
  30. m1.insert(std::pair<char, std::string>('P', ".--."));
  31. m1.insert(std::pair<char, std::string>('Q', "--.-"));
  32. m1.insert(std::pair<char, std::string>('R', ".-."));
  33. m1.insert(std::pair<char, std::string>('S', "..."));
  34. m1.insert(std::pair<char, std::string>('T', "-"));
  35. m1.insert(std::pair<char, std::string>('U', "..-"));
  36. m1.insert(std::pair<char, std::string>('V', "...-"));
  37. m1.insert(std::pair<char, std::string>('W', ".--"));
  38. m1.insert(std::pair<char, std::string>('X', "-..-"));
  39. m1.insert(std::pair<char, std::string>('Y', "-.--"));
  40. m1.insert(std::pair<char, std::string>('Z', "--.."));
  41. m1.insert(std::pair<char, std::string>('_', "..--"));
  42. m1.insert(std::pair<char, std::string>(',', ".-.-"));
  43. m1.insert(std::pair<char, std::string>('.', "---."));
  44. m1.insert(std::pair<char, std::string>('?', "----"));
  45. for (std::map<char, std::string>::const_iterator it = m1.begin(); it != m1.end(); ++it)
  46. m2.insert(std::pair<std::string, char>(it->second, it->first));
  47.  
  48. std::string line;
  49. std::string enc;
  50. std::string l;
  51. while (getline(cin, line))
  52. {
  53. std::string enc;
  54. std::string l;
  55. for (std::string::const_iterator it = line.begin(); it != line.end(); ++it)
  56. {
  57. enc += m1[*it];
  58. l += '0' + m1[*it].length();
  59. }
  60.  
  61. size_t pos = 0;
  62. for (std::string::reverse_iterator it = l.rbegin(); it != l.rend(); ++it)
  63. {
  64. printf("%c", m2[enc.substr(pos, *it - '0')]);
  65. pos += *it - '0';
  66. }
  67. printf("\n");
  68. }
  69.  
  70.  
  71. return 0;
  72. }
  73.  
  74.