QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#829509#1277. PermutationRong7AC ✓1361ms134320kbC++172.2kb2024-12-24 10:32:572024-12-24 10:32:57

Judging History

This is the latest submission verdict.

  • [2024-12-24 10:32:57]
  • Judged
  • Verdict: AC
  • Time: 1361ms
  • Memory: 134320kb
  • [2024-12-24 10:32:57]
  • Submitted

answer

// Go in my style.
// Not afraid to dark.

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

clock_t sttime;
#define STCLOCK sttime = clock ();
#define TIMENOW fprintf (stderr, "\nNOW TIME COSSEMED: %0.4lf\n", 1.0 * (clock () - sttime) / CLOCKS_PER_SEC);
#define inline __inline__ __attribute__ ((always_inline))

#define ll long long

namespace io {
    int read_pos, read_dt; char read_char;
    inline int read (int &p = read_pos){
        p = 0, read_dt = 1; read_char = getchar ();
        while (! isdigit (read_char)){
            if (read_char == '-')
                read_dt = - 1;
            read_char = getchar ();
        }
        while (isdigit (read_char)){
            p = (p << 1) + (p << 3) + read_char - 48;
            read_char = getchar ();
        }
        return p = p * read_dt;
    }
    int write_sta[65], write_top;
    inline void write (int x){
        if (x < 0)
            putchar ('-'), x = - x;
        write_top = 0;
        do
            write_sta[write_top ++] = x % 10, x /= 10;
        while (x);
        while (write_top)
            putchar (write_sta[-- write_top] + 48);
    }
}

const int N = 50, mod = 1e9 + 7;
#define al(x) ((1ll << (x)) - 1)
int n, a[N + 5];
unordered_map < ll , int > f[N + 5];

inline int MOD (int x){ return x >= mod ? x - mod : x; }

inline void ARKNIGHTS (){
    io::read (n);
    for (int i = 1;i <= n;++ i) io::read (a[i]), -- a[i];
    f[0][0] = 1;
    int ans = 0, cnt = 0; ll coef = 1;
    for (int i = 1;i <= n;++ i){
        f[i].clear ();
        if (a[i] == - 1) coef = coef * (++ cnt) % mod;
        for (auto x : f[i - 1]){
            #define rec (i == n ? ans : f[i][x.first | (1ll << j)])
            ll r = 0;
            for (int j = 0, r = 0;j < n;r = r << 1 | (x.first >> (j ++) & 1))
            if ((a[i] == - 1 || a[i] == j) && ! (x.first >> j & 1))
            if ((r & al (n - j - 1)) == (x.first >> (j + 1) & al (j)))
                rec = MOD (rec + x.second);
        }
    }
    io::write ((coef - ans + mod) % mod), putchar ('\n');
}

signed main (){
    STCLOCK

    for (int T = io::read ();T --;ARKNIGHTS ()) ;

    TIMENOW
    return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 1ms
memory: 4024kb

input:

2
3
0 0 0
7
1 0 3 0 0 6 0

output:

2
21

result:

ok 2 tokens

Test #2:

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

input:

50
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0

output:

0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0

result:

ok 50 tokens

Test #3:

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

input:

25
2
0 0
2
0 0
2
0 0
2
0 0
2
0 0
2
0 0
2
0 0
2
0 0
2
0 0
2
0 0
2
0 0
2
0 0
2
0 0
2
0 0
2
0 0
2
0 0
2
0 0
2
0 0
2
0 0
2
0 0
2
0 0
2
0 0
2
0 0
2
0 0
2
0 0

output:

0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0

result:

ok 25 tokens

Test #4:

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

input:

16
3
0 0 0
3
0 0 0
3
0 0 0
3
0 0 0
3
0 0 0
3
0 0 0
3
0 0 0
3
0 0 0
3
0 0 0
3
0 0 0
3
0 0 0
3
0 0 0
3
0 0 0
3
0 0 0
3
0 0 0
3
0 0 0

output:

2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2

result:

ok 16 tokens

Test #5:

score: 0
Accepted
time: 1ms
memory: 3856kb

input:

5
10
0 0 0 0 0 0 0 0 0 0
10
0 0 0 0 0 0 0 0 0 0
10
0 0 0 0 0 0 0 0 0 0
10
0 0 0 0 0 0 0 0 0 0
10
0 0 0 0 0 0 0 0 0 0

output:

3627734
3627734
3627734
3627734
3627734

result:

ok 5 tokens

Test #6:

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

input:

4
11
0 10 11 6 1 0 8 0 0 3 5
11
0 0 0 10 8 5 4 1 0 2 9
11
0 4 0 3 11 0 0 0 7 8 1
11
0 8 0 3 9 0 0 0 7 4 0

output:

24
24
120
720

result:

ok 4 tokens

Test #7:

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

input:

4
12
0 0 11 0 0 6 1 0 4 0 5 8
12
7 0 10 11 4 6 1 8 0 12 0 0
12
0 12 0 0 0 0 5 0 1 0 10 11
12
0 0 4 3 9 12 2 5 1 10 6 0

output:

720
24
5040
6

result:

ok 4 tokens

Test #8:

score: 0
Accepted
time: 1ms
memory: 3836kb

input:

3
13
0 13 6 3 0 11 0 0 0 0 1 2 0
13
9 0 0 0 0 0 8 0 5 7 0 12 0
13
0 0 0 0 0 0 3 10 2 9 0 12 0

output:

5040
40320
40320

result:

ok 3 tokens

Test #9:

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

input:

3
14
0 12 10 9 0 0 11 0 0 1 6 4 8 13
14
0 0 8 0 0 9 14 3 0 0 6 2 0 0
14
13 0 8 0 0 0 0 0 14 7 4 6 0 3

output:

120
40320
5040

result:

ok 3 tokens

Test #10:

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

input:

3
15
8 7 12 14 6 0 0 9 4 0 1 0 0 0 2
15
5 0 0 9 0 7 15 0 13 4 11 0 0 0 2
15
0 0 0 2 0 0 7 0 0 8 0 13 14 10 3

output:

720
5040
40320

result:

ok 3 tokens

Test #11:

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

input:

2
20
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
20
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

output:

143388927
143388927

result:

ok 2 tokens

Test #12:

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

input:

1
30
21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

output:

586750519

result:

ok "586750519"

Test #13:

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

input:

1
40
0 0 0 0 23 26 0 0 0 0 0 0 32 20 33 0 0 0 0 0 0 0 0 0 0 0 0 0 36 0 0 0 0 0 0 0 0 0 0 0

output:

943272305

result:

ok "943272305"

Test #14:

score: 0
Accepted
time: 140ms
memory: 23372kb

input:

1
41
0 0 0 0 0 0 0 0 0 14 38 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15 0 0 35 9 0 0

output:

523095984

result:

ok "523095984"

Test #15:

score: 0
Accepted
time: 259ms
memory: 35732kb

input:

1
42
0 0 0 0 0 0 0 0 0 0 0 0 4 22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 38 0 0 0 1 0

output:

472948359

result:

ok "472948359"

Test #16:

score: 0
Accepted
time: 1ms
memory: 3788kb

input:

5
10
0 0 7 0 0 0 0 0 0 3
10
0 5 0 0 0 0 0 9 0 0
10
1 6 0 0 0 0 0 5 0 0
10
0 0 4 0 0 0 3 0 1 9
10
0 0 0 0 0 0 0 6 0 0

output:

40320
40320
5040
718
362648

result:

ok 5 tokens

Test #17:

score: 0
Accepted
time: 1ms
memory: 4068kb

input:

5
9
0 6 0 0 0 0 0 0 0
9
6 0 0 0 3 0 0 7 0
9
8 0 0 0 0 0 7 3 4
9
0 0 0 0 0 0 0 0 0
9
0 0 0 0 0 0 8 2 0

output:

40270
720
120
362384
4996

result:

ok 5 tokens

Test #18:

score: 0
Accepted
time: 299ms
memory: 42068kb

input:

1
42
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

output:

94131117

result:

ok "94131117"

Test #19:

score: 0
Accepted
time: 193ms
memory: 32480kb

input:

1
40
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

output:

614960773

result:

ok "614960773"

Test #20:

score: 0
Accepted
time: 68ms
memory: 15612kb

input:

1
35
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

output:

478043548

result:

ok "478043548"

Test #21:

score: 0
Accepted
time: 23ms
memory: 8156kb

input:

1
30
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

output:

343955582

result:

ok "343955582"

Test #22:

score: 0
Accepted
time: 9ms
memory: 5532kb

input:

1
25
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

output:

242322220

result:

ok "242322220"

Test #23:

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

input:

1
20
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

output:

143388927

result:

ok "143388927"

Test #24:

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

input:

5
10
0 0 0 2 0 9 0 5 0 0
10
0 1 0 3 7 0 0 0 0 0
10
0 0 10 8 0 0 0 9 0 7
10
0 7 1 9 0 0 0 0 0 0
10
0 4 0 0 10 0 0 0 9 0

output:

5028
5000
719
5018
5034

result:

ok 5 tokens

Test #25:

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

input:

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

output:

0
0
0
0
0

result:

ok 5 tokens

Test #26:

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

input:

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

output:

4
1
5
1
1

result:

ok 5 tokens

Test #27:

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

input:

1
42
29 13 21 37 5 17 33 1 0 0 41 11 27 35 3 19 31 15 23 39 7 12 28 4 36 20 24 0 0 32 16 2 34 18 26 10 42 0 30 6 38 22

output:

118

result:

ok "118"

Test #28:

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

input:

1
42
37 5 21 13 29 17 1 33 25 9 41 3 35 0 0 27 23 0 7 31 15 32 16 8 40 24 0 0 20 28 0 30 0 0 38 22 10 0 0 0 0 18

output:

479001592

result:

ok "479001592"

Test #29:

score: 0
Accepted
time: 1ms
memory: 3780kb

input:

1
42
0 29 0 0 21 33 1 17 41 9 0 15 31 0 7 23 0 0 0 0 35 20 4 36 28 12 32 0 0 40 24 26 10 0 18 34 0 0 38 6 0 0

output:

789741538

result:

ok "789741538"

Test #30:

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

input:

1
42
0 0 25 0 1 33 0 0 0 29 0 0 0 35 0 0 7 39 0 31 0 0 42 0 0 0 2 0 38 22 14 0 0 0 0 0 28 24 0 0 0 0

output:

394131909

result:

ok "394131909"

Test #31:

score: 0
Accepted
time: 1361ms
memory: 134320kb

input:

1
50
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

output:

333255637

result:

ok "333255637"

Test #32:

score: 0
Accepted
time: 1115ms
memory: 123704kb

input:

1
49
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

output:

22735711

result:

ok "22735711"

Test #33:

score: 0
Accepted
time: 920ms
memory: 98004kb

input:

1
48
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

output:

15964537

result:

ok "15964537"

Test #34:

score: 0
Accepted
time: 1ms
memory: 3868kb

input:

1
49
45 0 29 21 37 5 17 49 33 1 9 0 0 7 0 0 0 47 0 27 43 0 19 3 35 22 6 38 30 0 0 18 0 0 26 0 0 0 0 8 0 0 32 44 0 28 36 4 0

output:

146325999

result:

ok "146325999"

Test #35:

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

input:

1
49
0 0 0 45 13 29 0 0 25 49 17 0 0 11 43 27 19 0 0 23 0 39 15 47 31 0 48 16 8 40 0 0 0 0 36 0 0 0 0 0 30 0 46 0 42 10 0 34 0

output:

657627892

result:

ok "657627892"

Test #36:

score: 0
Accepted
time: 88ms
memory: 17464kb

input:

1
49
0 0 0 0 0 0 11 47 0 0 0 44 0 0 0 0 0 0 0 49 14 0 0 0 0 0 0 0 0 36 0 0 0 27 0 0 0 0 0 26 43 1 0 0 41 0 0 0 0

output:

472948359

result:

ok "472948359"

Test #37:

score: 0
Accepted
time: 1149ms
memory: 123744kb

input:

1
49
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 37 0 30 0 0 33

output:

741412713

result:

ok "741412713"

Test #38:

score: 0
Accepted
time: 1ms
memory: 4092kb

input:

1
50
12 0 28 20 4 36 8 0 24 16 0 32 0 0 0 30 46 14 50 18 0 2 0 42 10 41 0 0 49 0 1 33 0 37 21 0 0 29 11 43 27 0 0 0 0 0 0 0 7 0

output:

602640125

result:

ok "602640125"

Test #39:

score: 0
Accepted
time: 1ms
memory: 4096kb

input:

1
50
19 35 3 0 43 0 0 0 39 15 0 0 0 0 9 0 1 0 0 21 5 37 29 13 0 34 0 50 18 0 10 42 6 0 22 30 0 0 0 0 0 48 16 32 28 12 44 20 0 36

output:

72847122

result:

ok "72847122"

Test #40:

score: 0
Accepted
time: 98ms
memory: 18592kb

input:

1
50
0 0 0 0 0 0 33 44 0 14 0 0 0 0 0 0 31 0 0 0 0 32 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 22 0 0 0 0 46 0 0 19

output:

776829897

result:

ok "776829897"

Test #41:

score: 0
Accepted
time: 36ms
memory: 9488kb

input:

1
50
0 0 0 0 0 28 0 2 0 0 0 0 0 7 0 0 0 0 0 29 0 0 0 0 17 0 0 0 0 0 0 0 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 49 0

output:

954784168

result:

ok "954784168"