Source code for submission s1132

fq.cpp

  1. #include <iostream>
  2. #include <map>
  3.  
  4. typedef unsigned int uint;
  5.  
  6. std::map<std::string, uint> dp;
  7.  
  8. uint solve(const std::string& str) {
  9. if (dp.count(str) == 0)
  10. {
  11. uint result = 0;
  12.  
  13. if (str[0] != ')')
  14. for (uint close = 1; close < str.size(); close += 2)
  15. {
  16. if (str[close] == '(')
  17. continue;
  18.  
  19. result += solve(str.substr(1, close - 1)) * solve(str.substr(close + 1, str.size() - close - 1));
  20. result %= 1000000;
  21. }
  22.  
  23. dp[str] = result;
  24. }
  25.  
  26. return dp[str];
  27. }
  28.  
  29. int main() {
  30. dp[""] = 1;
  31. dp[".."] = 1;
  32.  
  33. dp["()"] = 1;
  34. dp["(."] = 1;
  35. dp[".)"] = 1;
  36.  
  37. dp[")("] = 0;
  38. dp[")."] = 0;
  39. dp[".("] = 0;
  40.  
  41. while (true)
  42. {
  43. std::string line;
  44. getline(std::cin, line);
  45. if (std::cin.fail())
  46. break;
  47.  
  48. uint result = solve(line);
  49.  
  50. std::cout << result << std::endl;
  51. }
  52.  
  53. return 0;
  54. }
  55.