Source code for submission s545

fs.cpp

  1. #include <stdio.h>
  2. #include <map>
  3. #include <string>
  4. #define mp make_pair
  5. using namespace std;
  6. map<char, string> mor;
  7. char line[1111];
  8. char nums[1111];
  9. char morse[4444];
  10. int L;
  11.  
  12. void solve() {
  13. int N = 0;
  14. for(int i = 0; i < L; i++) {
  15. nums[i] = mor[line[i]].size();
  16. for(int j = 0; j < mor[line[i]].size(); j++) {
  17. morse[N++] = mor[line[i]][j];
  18. }
  19. }
  20. morse[N] = '\0';
  21. int let = 0;
  22. for(int j = 0; j < N; let++) {
  23. string curr = "";
  24. for(int i = 0; i < nums[L-let-1]; i++) {
  25. curr += morse[j+i];
  26. }
  27. for(int i = 0; i < 26; i++) {
  28. if(mor['A'+i] == curr) printf("%c", 'A'+i);
  29. }
  30. if(mor['_'] == curr) printf("%c", '_');
  31. if(mor['.'] == curr) printf("%c", '.');
  32. if(mor[','] == curr) printf("%c", ',');
  33. if(mor['?'] == curr) printf("%c", '?');
  34. j += nums[L-let-1];
  35. }
  36. printf("\n");
  37. }
  38.  
  39. int main() {
  40. mor.insert(mp('A', ".-"));
  41. mor.insert(mp('B', "-..."));
  42. mor.insert(mp('C', "-.-."));
  43. mor.insert(mp('D', "-.."));
  44. mor.insert(mp('E', "."));
  45. mor.insert(mp('F', "..-."));
  46. mor.insert(mp('G', "--."));
  47. mor.insert(mp('H', "...."));
  48. mor.insert(mp('I', ".."));
  49. mor.insert(mp('J', ".---"));
  50. mor.insert(mp('K', "-.-"));
  51. mor.insert(mp('L', ".-.."));
  52. mor.insert(mp('M', "--"));
  53. mor.insert(mp('N', "-."));
  54. mor.insert(mp('O', "---"));
  55. mor.insert(mp('P', ".--."));
  56. mor.insert(mp('Q', "--.-"));
  57. mor.insert(mp('R', ".-."));
  58. mor.insert(mp('S', "..."));
  59. mor.insert(mp('T', "-"));
  60. mor.insert(mp('U', "..-"));
  61. mor.insert(mp('V', "...-"));
  62. mor.insert(mp('W', ".--"));
  63. mor.insert(mp('X', "-..-"));
  64. mor.insert(mp('Y', "-.--"));
  65. mor.insert(mp('Z', "--.."));
  66. mor.insert(mp('.', "---."));
  67. mor.insert(mp(',', ".-.-"));
  68. mor.insert(mp('?', "----"));
  69. mor.insert(mp('_', "..--"));
  70.  
  71. char x;
  72. L=0;
  73.  
  74. while(scanf("%c", &x) == 1) {
  75. if(x == '\n') {line[L] = '\0'; solve();L=0;}
  76. line[L++] = x;
  77. }
  78.  
  79. return 0;
  80. }
  81.