Source code for submission s551

fq.cpp

  1. #include<cstdio>
  2. #include<cstdlib>
  3. #include<cstring>
  4.  
  5. #include<cmath>
  6. #include<cctype>
  7. #include<climits>
  8. #include<algorithm>
  9. #include<utility>
  10. #include<string>
  11.  
  12. #include<deque>
  13. #include<list>
  14. #include<map>
  15. #include<queue>
  16. #include<set>
  17. #include<stack>
  18. #include<vector>
  19.  
  20.  
  21. using namespace std;
  22.  
  23. #define REP(i,N) for (int i = 0; i < (N); i++)
  24. #define FOR(i,a,b) for (int i = (a); i <= (b); i++)
  25. #define FORI(i,a,b) for (int i = (a); i < (b); i++)
  26. #define FORD(i,a,b) for (int i = (a)-1; i >= (b); i--)
  27. #define DP(arg...) fprintf(stderr, ## arg)
  28.  
  29. typedef long long ll;
  30. typedef long double ld;
  31. typedef pair<int,int> ii;
  32.  
  33. #define MOD 1000000
  34.  
  35. ll D[1111][1111];
  36. int n;
  37. char s[1111];
  38.  
  39. void solve() {
  40. n = strlen(s+1);
  41. REP(i, n+5) REP(j, n+5) D[i][j] = 0;
  42. D[0][0] = 1;
  43. FOR (i, 1, n) {
  44. FOR(j, 0, n) {
  45. if (s[i]=='(' || s[i]=='.') {
  46. D[i][j+1] += D[i-1][j];
  47. D[i][j+1] %= MOD;
  48. }
  49. if ((s[i]==')' || s[i]=='.') && j>0) {
  50. D[i][j-1] += D[i-1][j];
  51. D[i][j-1] %= MOD;
  52. }
  53. }
  54. }
  55. /*REP(i, n+1) {
  56. REP(j, n+1) printf("%lld ", D[i][j]); printf("\n");
  57. }*/
  58. printf("%lld\n", D[n][0]);
  59. }
  60.  
  61. int main() {
  62. while (scanf(" %s", s+1) != EOF) {
  63. solve();
  64. }
  65. return 0;
  66. }
  67.