Source code for submission s663

fq.cpp

  1. #include <iostream>
  2. #include <set>
  3. #include <stdio.h>
  4. #include <utility>
  5. #include <map>
  6. #include <string>
  7. #include <sstream>
  8. #include <algorithm>
  9. #include <vector>
  10. using namespace std;
  11.  
  12. const long m = 100000;
  13.  
  14. int main(){
  15. string s;
  16. while(cin >> s){
  17. int res = 0;
  18. int N = s.size();
  19. vector<vector<long> > A(N+1, vector<long>(N+1));
  20. A[N-1][0] = 1;
  21. if(s[N-1] == '(' || s[0] == ')'){
  22. cout << 0 << '\n';
  23. continue;
  24. }
  25. for(int i=N-2; i>=0; --i){
  26. for(int j=0; j<N-i+1; ++j){
  27. if(j == 0){
  28. if(s[i+1] == ')'){
  29. A[i][j] = 0;
  30. }
  31. else{
  32. A[i][j] = A[i+1][j+1];
  33. }
  34. }
  35. else{
  36. if(s[i+1] == '('){
  37. A[i][j] = A[i+1][j+1];
  38. }
  39. else if(s[i+1] == ')'){
  40. A[i][j] = A[i+1][j-1];
  41. }
  42. else{
  43. A[i][j] = A[i+1][j+1] + A[i+1][j-1] % m;
  44. }
  45. }
  46. }
  47. }
  48. cout << A[0][1] % m << '\n';
  49. }
  50. return 0;
  51. }
  52.