Advertisement
Guest User

Untitled

a guest
Aug 21st, 2019
131
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 <algorithm>
  3. #include <cmath>
  4. #include <string>
  5. #include <cstdlib>
  6. #include <vector>
  7. #include <queue>
  8. #include <set>
  9. #include <map>
  10. #include <cstdio>
  11. #include <iomanip>
  12.  
  13. #define SWS ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0)
  14. #define pb push_back
  15. #define ppb pop_back
  16. #define ft first
  17. #define sd second
  18. #define read freopen("prices.in", "r", stdin)
  19. #define write freopen("prices.out", "w", stdout)
  20. #define files read; write
  21.  
  22. using namespace std;
  23.  
  24. typedef long long ll;
  25. typedef long double ld;
  26. typedef pair<int, int> pii;
  27.  
  28. const int Z = (int)3e3 + 228;
  29. const int N = (int)3e5 + 228;
  30. const int MOD = (int)1e9 + 7;
  31. const int INF = (int) 1e9 + 228;
  32.  
  33. int dp[111][111];
  34.  
  35. int main()
  36. {
  37. SWS;
  38. //files;
  39. string s;
  40. cin >> s;
  41. int n = s.length();
  42. for (int i = 0; i < n; i++)
  43. dp[i][i] = 1;
  44. for (int len = 2; len <= n; len++)
  45. for (int i = 0; i < n; i++)
  46. {
  47. int l = i, r = i + len - 1;
  48. if (r >= n) break;
  49. if (len == 2 && s[l] == '(' && s[r] == ')')
  50. {
  51. dp[l][r] = 0;
  52. continue;
  53. }
  54. dp[l][r] = INF;
  55. for (int k = l; k < r; k++)
  56. dp[l][r] = min(dp[l][r], dp[l][k] + dp[k + 1][r]);
  57. if (s[l] == '(' && s[r] == ')') dp[l][r] = min(dp[l][r], dp[l + 1][r - 1]);
  58. }
  59. cout << dp[0][n - 1];
  60. return 0;
  61. }
  62. //()x)y)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement