QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#372571#2836. Permutation Patternckiseki#AC ✓338ms126656kbC++202.2kb2024-03-31 15:46:322024-03-31 15:46:33

Judging History

你现在查看的是最新测评结果

  • [2024-03-31 15:46:33]
  • 评测
  • 测评结果:AC
  • 用时:338ms
  • 内存:126656kb
  • [2024-03-31 15:46:32]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;

#define all(x) begin(x), end(x)
#ifdef CKISEKI
#define safe cerr << __PRETTY_FUNCTION__ << " line " << __LINE__ << " safe\n"
#define debug(a...) debug_(#a, a)
#define orange(a...) orange_(#a, a)
void debug_(auto s, auto ...a) {
  cerr << "\e[1;32m(" << s << ") = (";
  int f = 0;
  (..., (cerr << (f++ ? ", " : "") << a));
  cerr << ")\e[0m\n";
}
#include <experimental/iterator>
void orange_(auto s, auto L, auto R) {
  cerr << "\e[1;33m[ " << s << " ] = [ ";
  using namespace experimental;
  copy(L, R, make_ostream_joiner(cerr, ", "));
  cerr << " ]\e[0m\n";
}
#else
#define safe ((void)0)
#define debug(...) safe
#define orange(...) safe
#endif

const int maxn = 53;
int64_t dp[maxn][maxn][maxn][maxn];

int64_t pre[maxn][maxn][maxn][maxn]; // prefix sum by third dim

int main() {
  cin.tie(nullptr)->sync_with_stdio(false);
  int n;
  while (cin >> n) {

    vector<int> p(n + 1);
    for (int i = 1; i <= n; i++) {
      cin >> p[i];
    }

    for (int i = 0; i <= n + 1; i++) {
      for (int j = 0; j <= n + 1; j++) {
        for (int u = 0; u <= n + 1; u++) {
          for (int d = 0; d <= n + 1; d++) {
            dp[i][j][u][d] = 0;
            pre[i][j][u][d] = 0;
          }
        }
      }
    }
    
    for (int i = 0; i <= n; i++) {
      for (int x = 0; x <= n + 1; x++)
        for (int d = 0; d <= n + 1; d++)
          pre[i + 1][i][x][d] = 1;
    }

    for (int i = n; i >= 1; i--) {
      for (int j = i; j <= n; j++) {
        for (int d = 1; d <= n; d++) {
          for (int u = i; u <= j; u++) if (p[u] >= d) {

            dp[i][j][p[u]][d] += pre[u + 1][j][ p[u] ][d];

            for (int z = i; z < u; z++) if (p[z] >= d && p[z] < p[u]) {
              dp[i][j][p[u]][d]
                += dp[i][u - 1][p[z]][d] * pre[u + 1][j][ p[u] ][p[z] + 1];
            }
          }

        }

        for (int d = 0; d <= n + 1; d++) {
          pre[i][j][0][d] = 1;
          for (int c = 1; c <= n; c++)
            pre[i][j][c][d] = pre[i][j][c - 1][d] + dp[i][j][c][d];
        }
      }

    }

    int64_t ans = 0;

    for (int i = 1; i <= n; i++) {
      ans += dp[1][n][i][1];
      debug(dp[1][n][i][1]);
    }
    cout << ans << '\n';
  }

  return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 2ms
memory: 15848kb

input:

2
2 1
3
1 2 3
4
2 3 4 1

output:

3
7
11

result:

ok 3 lines

Test #2:

score: 0
Accepted
time: 2ms
memory: 13820kb

input:

1
1
2
1 2
2
2 1
3
1 2 3
3
1 3 2
3
2 1 3
3
2 3 1
3
3 1 2
3
3 2 1

output:

1
3
3
7
7
7
6
7
7

result:

ok 9 lines

Test #3:

score: 0
Accepted
time: 3ms
memory: 18008kb

input:

5
4 5 2 1 3
5
2 5 1 4 3
5
1 2 5 3 4
5
2 4 5 3 1
5
3 4 2 1 5
5
1 3 5 2 4
5
3 4 2 1 5
5
5 1 4 3 2
5
1 5 4 2 3
5
5 2 1 3 4
5
4 5 1 2 3
5
5 2 1 4 3
5
5 3 1 4 2
5
5 1 2 3 4
5
3 2 1 4 5
5
4 3 1 2 5
5
1 3 4 2 5
5
5 4 2 3 1
5
2 4 1 5 3
5
3 5 1 4 2
5
4 2 3 1 5
5
1 5 2 3 4
5
3 2 1 4 5
5
4 5 2 1 3
5
3 2 4 5 1
...

output:

24
27
31
20
25
27
25
31
31
31
24
31
27
31
31
31
27
27
24
23
27
31
31
24
21
25
21
27
24
25
31
31
25
24
20
31
27
21
21
31
27
31
21
31
21
31
24
22
31
25
25
27
25
27
27
27
31
31
31
22
25
31
27
25
31
22
31
27
25
20
27
22
31
31
25
20
31
31
25
31
27
27
25
20
31
31
31
27
31
31
22
21
25
31
25
27
19
31
27
23

result:

ok 100 lines

Test #4:

score: 0
Accepted
time: 2ms
memory: 15792kb

input:

4
1 2 3 4
4
1 2 4 3
4
1 3 2 4
4
1 3 4 2
4
1 4 2 3
4
1 4 3 2
4
2 1 3 4
4
2 1 4 3
4
2 3 1 4
4
2 3 4 1
4
2 4 1 3
4
2 4 3 1
4
3 1 2 4
4
3 1 4 2
4
3 2 1 4
4
3 2 4 1
4
3 4 1 2
4
3 4 2 1
4
4 1 2 3
4
4 1 3 2
4
4 2 1 3
4
4 2 3 1
4
4 3 1 2
4
4 3 2 1

output:

15
15
15
13
15
15
15
15
13
11
13
12
15
13
15
12
12
12
15
15
15
13
15
15

result:

ok 24 lines

Test #5:

score: 0
Accepted
time: 0ms
memory: 22052kb

input:

5
1 2 3 4 5
5
1 2 3 5 4
5
1 2 4 3 5
5
1 2 4 5 3
5
1 2 5 3 4
5
1 2 5 4 3
5
1 3 2 4 5
5
1 3 2 5 4
5
1 3 4 2 5
5
1 3 4 5 2
5
1 3 5 2 4
5
1 3 5 4 2
5
1 4 2 3 5
5
1 4 2 5 3
5
1 4 3 2 5
5
1 4 3 5 2
5
1 4 5 2 3
5
1 4 5 3 2
5
1 5 2 3 4
5
1 5 2 4 3
5
1 5 3 2 4
5
1 5 3 4 2
5
1 5 4 2 3
5
1 5 4 3 2
5
2 1 3 4 5
...

output:

31
31
31
27
31
31
31
31
27
23
27
25
31
27
31
25
25
25
31
31
31
27
31
31
31
31
31
27
31
31
27
27
23
20
23
21
27
24
25
21
21
20
27
27
25
22
25
24
31
31
27
23
27
25
31
31
25
21
25
22
25
21
25
20
19
19
25
23
25
21
22
22
31
27
31
25
25
25
31
27
27
22
23
21
31
25
31
24
22
22
24
24
24
21
24
24
31
31
31
27

result:

ok 100 lines

Test #6:

score: 0
Accepted
time: 0ms
memory: 22056kb

input:

5
5 1 4 2 3
5
5 1 4 3 2
5
5 2 1 3 4
5
5 2 1 4 3
5
5 2 3 1 4
5
5 2 3 4 1
5
5 2 4 1 3
5
5 2 4 3 1
5
5 3 1 2 4
5
5 3 1 4 2
5
5 3 2 1 4
5
5 3 2 4 1
5
5 3 4 1 2
5
5 3 4 2 1
5
5 4 1 2 3
5
5 4 1 3 2
5
5 4 2 1 3
5
5 4 2 3 1
5
5 4 3 1 2
5
5 4 3 2 1

output:

31
31
31
31
27
23
27
25
31
27
31
25
25
25
31
31
31
27
31
31

result:

ok 20 lines

Test #7:

score: 0
Accepted
time: 4ms
memory: 22084kb

input:

6
3 4 5 1 6 2
6
3 4 5 6 1 2
6
4 2 5 6 3 1
6
3 5 2 6 4 1
6
3 2 4 1 5 6
6
5 1 4 3 2 6
6
4 6 3 2 1 5
6
3 4 6 5 1 2
6
5 1 2 6 4 3
6
3 5 2 6 1 4
6
6 5 4 1 2 3
6
1 3 2 5 4 6
6
2 3 1 5 4 6
6
1 4 6 3 5 2
6
3 2 4 5 6 1
6
1 2 6 3 4 5
6
5 4 6 1 2 3
6
4 1 2 5 3 6
6
4 1 3 5 2 6
6
6 1 5 2 4 3
6
2 3 1 5 6 4
6
1 4 ...

output:

33
30
33
34
51
63
49
33
51
38
63
63
55
43
38
63
42
55
51
63
48
39
39
51
45
63
46
51
51
63
55
63
42
55
63
45
63
40
47
40
47
51
55
39
51
55
44
49
63
42
63
63
37
36
63
63
39
40
49
63
63
51
51
47
47
45
39
36
63
55
55
63
51
51
37
42
51
55
51
49
39
43
55

result:

ok 83 lines

Test #8:

score: 0
Accepted
time: 0ms
memory: 24240kb

input:

7
2 1 4 3 5 7 6
7
5 4 7 6 3 2 1
7
7 2 5 3 6 4 1
7
6 3 1 5 4 2 7
7
6 5 4 7 2 1 3
7
4 1 7 2 5 3 6
7
5 3 1 6 2 7 4
7
3 7 1 6 5 4 2
7
6 2 1 5 4 3 7
7
4 7 6 3 1 2 5
7
4 6 3 7 1 2 5
7
6 5 2 1 7 3 4
7
4 1 2 6 3 7 5
7
3 1 6 7 5 2 4
7
4 7 3 6 1 5 2
7
3 6 5 4 7 1 2
7
1 7 2 4 3 5 6
7
2 6 1 3 5 7 4
7
1 2 7 4 6 ...

output:

127
64
73
103
78
95
81
89
127
85
66
91
99
79
67
61
127
91
111
83
67
60
127
85
57
66
111
99
111
53
64
99
89
91
73
99
75
83
103
81
72
75
69
99
64
99
91
91
95
85
66
60
79
103
64
64
91
83
67
87
75
91
75
103
95
75
71
54
89
68
65

result:

ok 71 lines

Test #9:

score: 0
Accepted
time: 0ms
memory: 26144kb

input:

8
4 1 2 7 8 5 6 3
8
7 2 8 6 4 5 1 3
8
2 3 4 8 6 5 1 7
8
5 8 3 6 2 1 4 7
8
2 4 3 8 1 7 5 6
8
5 7 8 4 6 3 1 2
8
1 4 2 7 5 3 8 6
8
6 7 8 4 3 1 2 5
8
7 2 5 1 6 4 8 3
8
8 1 4 7 2 5 6 3
8
6 8 7 3 2 1 5 4
8
7 6 8 2 1 3 5 4
8
1 5 6 4 2 7 3 8
8
6 3 2 7 8 4 1 5
8
6 2 3 7 4 5 8 1
8
4 5 7 1 8 3 2 6
8
7 4 1 6 5 ...

output:

143
125
149
143
175
98
183
131
147
167
162
162
159
107
117
102
183
135
129
155
80
191
135
165
155
171
103
255
169
125
111
102
114
90
255
111
107
255
95
139
167
159
171
168
83
191
91
90
165
115
207
109
159
141
223
100
159
97
101
167
103
132

result:

ok 62 lines

Test #10:

score: 0
Accepted
time: 0ms
memory: 30616kb

input:

9
2 3 7 8 9 6 1 5 4
9
1 6 3 4 2 9 8 7 5
9
1 9 2 6 7 3 4 5 8
9
4 2 1 5 6 3 9 7 8
9
5 1 2 4 3 8 6 9 7
9
5 3 6 2 9 8 7 1 4
9
2 1 9 8 5 3 6 4 7
9
5 4 1 7 8 3 9 6 2
9
2 1 9 6 5 4 8 3 7
9
5 3 6 4 9 2 7 1 8
9
3 7 1 4 6 9 8 5 2
9
5 1 9 4 8 7 3 2 6
9
5 8 7 4 9 6 3 2 1
9
5 7 2 1 3 9 4 6 8
9
9 8 5 1 4 6 7 3 2
...

output:

183
349
399
383
447
176
447
173
399
187
197
255
154
309
271
224
239
177
107
351
183
271
279
161
175
267
263
213
155
319
223
219
215
181
259
271
225
112
337
195
175
199
337
195
279
511
212
182
217
180
353
205
279
271
259

result:

ok 55 lines

Test #11:

score: 0
Accepted
time: 3ms
memory: 32320kb

input:

10
3 8 6 9 7 5 2 1 4 10
10
9 4 6 10 2 5 3 1 8 7
10
7 8 5 10 2 9 3 1 4 6
10
8 6 9 10 7 3 4 5 2 1
10
5 2 4 3 8 6 1 7 9 10
10
1 2 8 4 5 7 10 9 6 3
10
8 3 4 6 5 10 9 7 2 1
10
3 9 10 4 5 1 2 8 6 7
10
4 8 2 3 9 10 5 6 1 7
10
2 3 4 1 8 7 9 5 10 6
10
4 10 6 2 3 1 8 5 7 9
10
8 7 6 2 4 9 10 1 5 3
10
1 9 6 5 1...

output:

355
367
271
213
615
439
267
433
292
455
543
319
331
671
895
279
523
623
291
319
387
513
367
383
1023
424
283
583
341
407
355
291
575
373
316
297
412
603
565
431
575
306
341
267
367
421
300
383
735
511

result:

ok 50 lines

Test #12:

score: 0
Accepted
time: 0ms
memory: 30436kb

input:

2
2 1
8
3 8 1 6 2 7 4 5
2
2 1
3
2 1 3
6
3 4 6 5 1 2
1
1
4
2 4 3 1
1
1
6
1 3 4 2 6 5
9
5 8 9 2 1 3 7 4 6
2
1 2
9
4 3 7 9 1 2 5 6 8
6
4 6 1 5 3 2
4
3 1 4 2
6
2 1 3 6 4 5
2
1 2
2
1 2
7
4 7 2 3 5 1 6
2
2 1
1
1
7
2 7 6 5 1 4 3
2
2 1
4
3 1 2 4
8
7 8 2 6 5 1 4 3
9
4 5 1 2 6 3 7 9 8
10
1 3 2 9 5 7 8 10 6 4
...

output:

3
158
3
7
33
1
12
1
55
249
3
247
43
13
63
3
3
73
3
1
99
3
15
156
335
495
53
15
135
7
3
318
7
1
27
135
1
287
138
205
1
103
895
15
15
27
175
75
73
175

result:

ok 50 lines

Test #13:

score: 0
Accepted
time: 323ms
memory: 125680kb

input:

50
3 50 12 35 11 7 17 49 1 9 41 5 4 27 6 22 8 20 44 43 10 13 15 42 38 16 18 19 30 2 23 21 34 24 32 25 45 39 40 48 26 28 37 36 33 31 29 47 46 14
50
41 21 40 37 36 31 30 3 2 1 34 27 8 4 5 9 28 17 10 11 7 12 15 38 13 14 6 18 20 25 24 16 22 29 26 35 32 33 46 45 50 42 47 48 49 23 43 39 44 19
50
41 38 23 ...

output:

71786596197
925094043175
15360313400319
83273752556543
599976015791
6320724096624
5783738400607
487480246255
307563605
419463685996543

result:

ok 10 lines

Test #14:

score: 0
Accepted
time: 320ms
memory: 126476kb

input:

50
34 20 49 44 4 16 7 24 26 46 31 12 22 47 17 21 29 14 23 9 11 2 30 33 18 8 19 13 38 15 39 28 48 27 35 3 40 42 37 6 25 32 43 10 45 1 50 41 5 36
50
2 29 24 7 1 3 8 4 12 5 6 10 9 26 11 23 13 44 14 16 41 37 15 19 20 34 33 32 21 45 40 22 17 28 25 27 18 30 31 35 38 36 39 43 42 50 46 49 47 48
50
28 19 18 ...

output:

469303887
3708187017215
320672525975551
2384027442511
7802888619
54571757666
12111593784831
124903382056959
22915448657023
181636580245503

result:

ok 10 lines

Test #15:

score: 0
Accepted
time: 313ms
memory: 125812kb

input:

50
1 2 3 16 5 4 6 12 10 9 8 7 11 14 13 15 42 41 40 21 17 19 18 20 26 25 22 24 23 28 27 39 29 36 32 31 30 33 35 34 38 37 43 45 44 50 46 47 48 49
50
24 30 13 12 44 9 8 6 26 1 5 3 10 11 23 15 14 16 18 17 21 19 22 37 25 33 27 2 32 31 28 29 40 36 20 34 50 47 41 4 38 42 43 46 45 48 39 35 7 49
50
45 44 25 ...

output:

1125899906842623
1973544596971
20464777601
145970369134591
1125899906842623
27103062537
492677980225535
611302507087
9436138365023
16901739359823

result:

ok 10 lines

Test #16:

score: 0
Accepted
time: 336ms
memory: 125596kb

input:

50
16 15 13 12 11 4 3 2 1 5 10 30 27 8 6 7 9 22 38 20 19 14 17 37 31 29 23 21 26 24 25 33 32 36 34 39 41 28 40 45 44 43 35 18 42 46 48 47 49 50
50
49 48 43 42 41 24 23 22 29 5 39 3 2 1 4 21 19 8 33 7 9 10 17 12 11 14 13 15 6 16 18 20 40 26 25 37 31 30 28 27 35 34 32 36 38 47 44 46 45 50
50
26 25 24 ...

output:

16941091848191
76454653671423
1125899906842623
281482263953919
1853535582743
11131049930979
914793674309631
109343881936895
323479068999679
226499395534975

result:

ok 10 lines

Test #17:

score: 0
Accepted
time: 332ms
memory: 125728kb

input:

50
48 47 46 45 44 30 35 24 3 16 12 10 4 2 1 9 8 7 6 15 13 14 31 28 27 18 19 20 17 11 25 21 26 5 23 43 29 34 32 33 37 38 36 39 40 22 42 41 49 50
50
50 13 47 44 43 49 42 34 32 31 30 28 27 26 25 14 9 8 7 5 24 3 1 4 12 6 10 2 16 15 11 21 20 18 17 19 22 23 29 33 35 37 36 39 38 40 41 46 45 48
50
46 43 25 ...

output:

13401186994175
58470124486783
3963515139491
18417882639247
1483926119947
74820097933311
76869894769151
138492980779
86510044435583
986103193471

result:

ok 10 lines

Test #18:

score: 0
Accepted
time: 321ms
memory: 126052kb

input:

50
50 49 48 47 45 42 41 40 39 38 18 17 16 1 15 14 5 4 2 3 7 6 8 13 11 10 9 12 32 27 26 25 24 19 20 23 21 22 28 29 31 30 37 33 36 35 34 43 44 46
50
3 1 2 5 4 11 6 33 43 19 8 21 18 17 9 13 10 34 12 15 16 20 31 29 22 24 25 26 28 7 30 42 41 32 35 38 27 37 36 40 39 44 45 23 46 49 48 47 14 50
50
46 45 44 ...

output:

1125899906842623
11503392639871
268613428707327
15555678637567
9233630159167
22814306219679
170131707658239
633318697600255
774159265169407
143738636705815

result:

ok 10 lines

Test #19:

score: 0
Accepted
time: 322ms
memory: 125680kb

input:

50
33 30 29 39 28 50 27 24 23 22 21 20 19 18 15 4 7 2 3 25 5 8 1 6 14 11 9 10 32 12 13 16 17 26 31 37 34 35 36 40 38 41 42 43 45 44 46 49 47 48
50
37 36 32 25 22 21 20 19 12 9 7 3 2 1 4 5 6 8 10 11 18 17 15 13 14 16 24 23 26 27 29 28 30 31 35 34 33 38 39 40 41 46 42 44 43 45 50 47 48 49
50
8 7 6 5 1...

output:

38933422040063
1125899906842623
562950014763007
44651459044351
26429508299007
22574688062335
50191439772447
48552580405247
976228746199
286807572873215

result:

ok 10 lines

Test #20:

score: 0
Accepted
time: 322ms
memory: 125636kb

input:

50
2 12 3 6 5 4 11 8 10 39 9 15 13 14 25 34 31 38 32 29 19 17 16 18 28 7 27 20 22 21 23 26 24 30 40 37 35 41 33 1 49 43 42 36 48 47 44 45 46 50
50
49 45 43 39 24 38 28 27 25 23 22 20 19 18 3 2 1 17 6 13 4 15 14 29 11 7 8 12 21 37 36 35 26 9 34 32 44 31 30 33 10 42 41 16 40 48 46 47 50 5
50
6 5 4 3 2...

output:

17351472343295
4556477881839
2463120461823
10732306780233
1125899906842623
1125899906842623
914793674309631
360661339078655
56122596884479
1125899906842623

result:

ok 10 lines

Test #21:

score: 0
Accepted
time: 338ms
memory: 125972kb

input:

50
13 11 10 7 12 6 5 2 1 3 4 9 8 14 15 16 18 17 20 19 26 22 21 25 24 23 27 28 29 30 32 31 35 34 33 36 40 39 37 38 41 42 44 43 46 45 47 48 49 50
50
33 5 4 3 2 1 31 27 10 9 6 8 7 25 24 12 15 13 14 23 22 20 19 16 18 17 21 26 29 28 30 32 34 43 37 39 35 36 38 42 40 11 41 44 46 45 47 48 50 49
50
12 9 4 2 ...

output:

636067476668415
457397606285311
562949953748991
193106020401151
156758753177599
562950161039359
1125899906842623
174067508416955
12327032671235
130364051111935

result:

ok 10 lines

Test #22:

score: 0
Accepted
time: 324ms
memory: 125656kb

input:

50
23 22 21 20 30 19 18 17 6 24 5 1 2 3 4 7 8 15 9 27 10 14 12 11 13 16 28 26 34 41 32 31 29 35 33 40 39 36 37 38 42 49 47 25 43 44 46 45 48 50
50
44 40 39 29 45 20 6 16 1 2 4 3 5 18 11 7 8 10 9 15 13 12 14 17 19 25 21 22 23 35 24 26 28 27 30 37 36 34 32 31 33 38 41 42 46 43 49 48 47 50
50
22 21 18 ...

output:

52374859921919
183793727635071
1125899906842623
164982120296479
291112892864703
84576527974399
149606796066815
1125899906842623
1125899906842623
26141702275847

result:

ok 10 lines

Test #23:

score: 0
Accepted
time: 303ms
memory: 126008kb

input:

50
19 27 40 18 49 41 4 42 23 44 13 12 6 14 20 17 28 35 43 21 15 29 34 2 38 48 10 9 32 31 22 11 3 50 36 45 8 25 30 37 1 5 24 16 26 7 33 39 46 47
50
12 26 47 33 38 49 1 20 39 17 42 18 37 6 30 19 22 23 5 31 45 41 9 16 34 10 7 35 46 50 2 24 11 40 4 32 27 13 48 14 36 3 43 44 8 25 28 21 29 15
50
22 32 36 ...

output:

247169890
56493847
155005117
61848536
421559517
201522429
133241515
63264935
97358485
652628926

result:

ok 10 lines

Test #24:

score: 0
Accepted
time: 32ms
memory: 126656kb

input:

50
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50

output:

1125899906842623

result:

ok single line: '1125899906842623'