Source code for submission s766

fs.cpp

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string>
  4. #include <deque>
  5. using namespace std;
  6.  
  7. char buffer[1000];
  8. deque<bool> morse;
  9. deque<int> numbers;
  10.  
  11. int main()
  12. {
  13. while (scanf("%s\n", &buffer) == 1)
  14. {
  15. morse.clear(); numbers.clear();
  16. string radek = buffer;
  17. for(int i=0; i<radek.size(); i++)
  18. {
  19. switch (radek[i])
  20. {
  21. case 'A': morse.push_back(true);morse.push_back(false); numbers.push_back(2); break;
  22. case 'B': morse.push_back(false);morse.push_back(true);morse.push_back(true);morse.push_back(true); numbers.push_back(4); break;
  23. case 'C': morse.push_back(false);morse.push_back(true);morse.push_back(false);morse.push_back(true); numbers.push_back(4); break;
  24. case 'D': morse.push_back(false);morse.push_back(true);morse.push_back(true); numbers.push_back(3); break;
  25. case 'E': morse.push_back(true); numbers.push_back(1); break;
  26. case 'F': morse.push_back(true);morse.push_back(true);morse.push_back(false);morse.push_back(true); numbers.push_back(4); break;
  27. case 'G': morse.push_back(false);morse.push_back(false);morse.push_back(true); numbers.push_back(3); break;
  28. case 'H': morse.push_back(true);morse.push_back(true);morse.push_back(true);morse.push_back(true); numbers.push_back(4); break;
  29. case 'I': morse.push_back(true);morse.push_back(true); numbers.push_back(2); break;
  30. case 'J': morse.push_back(true);morse.push_back(false);morse.push_back(false);morse.push_back(false); numbers.push_back(4); break;
  31. case 'K': morse.push_back(false);morse.push_back(true);morse.push_back(false); numbers.push_back(3); break;
  32. case 'L': morse.push_back(true);morse.push_back(false);morse.push_back(true);morse.push_back(true); numbers.push_back(4); break;
  33. case 'M': morse.push_back(false);morse.push_back(false); numbers.push_back(2); break;
  34. case 'N': morse.push_back(false);morse.push_back(true); numbers.push_back(2); break;
  35. case 'O': morse.push_back(false);morse.push_back(false);morse.push_back(false); numbers.push_back(3); break;
  36. case 'P': morse.push_back(true);morse.push_back(false);morse.push_back(false);morse.push_back(true); numbers.push_back(4); break;
  37. case 'Q': morse.push_back(false);morse.push_back(false);morse.push_back(true);morse.push_back(false); numbers.push_back(4); break;
  38. case 'R': morse.push_back(true);morse.push_back(false);morse.push_back(true); numbers.push_back(3); break;
  39. case 'S': morse.push_back(true);morse.push_back(true);morse.push_back(true); numbers.push_back(3); break;
  40. case 'T': morse.push_back(false); numbers.push_back(1); break;
  41. case 'U': morse.push_back(true);morse.push_back(true);morse.push_back(false); numbers.push_back(3); break;
  42. case 'V': morse.push_back(true);morse.push_back(true);morse.push_back(true);morse.push_back(false); numbers.push_back(4); break;
  43. case 'W': morse.push_back(true);morse.push_back(false);morse.push_back(false); numbers.push_back(3); break;
  44. case 'X': morse.push_back(false);morse.push_back(true);morse.push_back(true);morse.push_back(false); numbers.push_back(4); break;
  45. case 'Y': morse.push_back(false);morse.push_back(true);morse.push_back(false);morse.push_back(false); numbers.push_back(4); break;
  46. case 'Z': morse.push_back(false);morse.push_back(false);morse.push_back(true);morse.push_back(true); numbers.push_back(4); break;
  47. case '_': morse.push_back(true);morse.push_back(true);morse.push_back(false);morse.push_back(false); numbers.push_back(4); break;
  48. case ',': morse.push_back(true);morse.push_back(false);morse.push_back(true);morse.push_back(false); numbers.push_back(4); break;
  49. case '.': morse.push_back(false);morse.push_back(false);morse.push_back(false);morse.push_back(true); numbers.push_back(4); break;
  50. case '?': morse.push_back(false);morse.push_back(false);morse.push_back(false);morse.push_back(false); numbers.push_back(4); break;
  51. default: break;
  52. }
  53. }
  54. while(numbers.size() > 0)
  55. {
  56. string letter = "";
  57. int size = numbers.back();
  58. for (int i=0; i<size; i++)
  59. {
  60. if (morse.front())
  61. letter += '.';
  62. else
  63. letter += '-';
  64. morse.pop_front();
  65. }
  66. if (letter == ".-") printf("A");
  67. else if (letter == "-...") printf("B");
  68. else if (letter == "-.-.") printf("C");
  69. else if (letter == "-..") printf("D");
  70. else if (letter == ".") printf("E");
  71. else if (letter == "..-.") printf("F");
  72. else if (letter == "--.") printf("G");
  73. else if (letter == "....") printf("H");
  74. else if (letter == "..") printf("I");
  75. else if (letter == ".---") printf("J");
  76. else if (letter == "-.-") printf("K");
  77. else if (letter == ".-..") printf("L");
  78. else if (letter == "--") printf("M");
  79. else if (letter == "-.") printf("N");
  80. else if (letter == "---") printf("O");
  81. else if (letter == ".--.") printf("P");
  82. else if (letter == "--.-") printf("Q");
  83. else if (letter == ".-.") printf("R");
  84. else if (letter == "...") printf("S");
  85. else if (letter == "-") printf("T");
  86. else if (letter == "..-") printf("U");
  87. else if (letter == "...-") printf("V");
  88. else if (letter == ".--") printf("W");
  89. else if (letter == "-..-") printf("X");
  90. else if (letter == "-.--") printf("Y");
  91. else if (letter == "--..") printf("Z");
  92. else if (letter == "..--") printf("_");
  93. else if (letter == ".-.-") printf(",");
  94. else if (letter == "---.") printf(".");
  95. else if (letter == "----") printf("?");
  96. numbers.pop_back();
  97. }
  98. printf("\n");
  99. }
  100. return 0;
  101. }
  102.