Advertisement
monajuma54

Untitled

Oct 19th, 2019
511
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.37 KB | None | 0 0
  1. #include <iostream>
  2. #include <list>
  3. #include <math.h>
  4. #include <unordered_map>
  5.  
  6. using namespace std;
  7.  
  8. unordered_map <string, bool> validStringMap;
  9. bool validString (string inputString) {
  10. if (validStringMap.find(inputString) != validStringMap.end()) {
  11. return validStringMap[inputString];
  12. }
  13.  
  14. if (inputString.size() == 1) {
  15. validStringMap[inputString] = true;
  16. return true;
  17. }
  18.  
  19. for (uint64_t i = 1; i < inputString.size(); i++) {
  20.  
  21. string left_part = inputString.substr(0, i);
  22. string right_part = inputString.substr(i, inputString.size()-1);
  23.  
  24. if (left_part > right_part)
  25. {
  26. validStringMap[inputString] = false;
  27. return false;
  28. }
  29.  
  30. if (validString(left_part) && validString(right_part)) {
  31. validStringMap[inputString] = true;
  32. return true;
  33. }
  34.  
  35. }
  36. validStringMap[inputString] = false;
  37. return false;
  38. }
  39. int main() {
  40. int n;
  41. cin >> n;
  42. list <string> inputString;
  43. for (int i = 0; i < n; i++) {
  44.  
  45. string in;
  46. cin >> in;
  47. inputString.push_back(in);
  48. }
  49.  
  50. for (list <string>::iterator it = inputString.begin(); it != inputString.end(); ++it) {
  51. cout << validString(*it);
  52. }
  53. cout << endl;
  54.  
  55. return 0;
  56. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement