Advertisement
OMEGAHEAD_MonkoX

Untitled

Feb 28th, 2020
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.30 KB | None | 0 0
  1. #include <iostream>
  2. #include <iomanip>
  3. #include <string>
  4. #include <sstream>
  5. #include <algorithm>
  6. #include <vector>
  7. #include <stdlib.h>
  8. #include <stdio.h>
  9. #include <fstream>
  10. #include <stack>
  11. #include <map>
  12. #include <cstring>
  13. #include <cmath>
  14. #include <set>
  15. #include <iterator>
  16. #include <cmath>
  17.  
  18.  
  19. const long long M = 1000000007;
  20.  
  21. void task()
  22. {
  23. bool flag = false;
  24. string s;
  25. long long int n, k = 0;
  26. int d = 0;
  27. getline(cin, s);
  28. n = s.size();
  29. vector<long long int> vec(int(n / 2) + 3, 0), vec2(int(n / 2) + 3, 0), z(int(n / 2) + 3, 0);
  30. vec[1] = 1;
  31. for(auto j = 1; j < n ; j++)
  32. {
  33. if (s[j - 1] == '(')
  34. {
  35. for(auto i = 1 + j % 2 ; i < n / 2 + 2; i += 2)
  36. vec2[i] = vec[i - 1] % M;
  37. }
  38. if (s[j - 1] == ')')
  39. {
  40. for(auto i = 1 + j % 2; i < n / 2 + 2; i += 2)
  41. vec2[i] = vec[i + 1] % M;
  42. }
  43. if (s[j - 1] == '?')
  44. {
  45. for(auto i = 1 + j % 2; i < n / 2 + 2; i += 2)
  46. {
  47. flag = true;
  48. vec2[i] = (vec[i - 1] + vec[i + 1]) % M;
  49. }
  50. }
  51.  
  52. swap(vec, vec2);
  53. vec2= z;
  54. }
  55.  
  56. if(flag == false)
  57. {
  58. cout << 1 << endl;
  59. d = 1;
  60.  
  61. }
  62. if (d == 0)
  63. cout << vec[2] << endl;
  64. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement