QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#308177#8018. 染色Ryan123100 ✓464ms47728kbC++148.9kb2024-01-19 17:38:492024-01-19 17:38:50

Judging History

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

  • [2024-01-19 17:38:50]
  • 评测
  • 测评结果:100
  • 用时:464ms
  • 内存:47728kb
  • [2024-01-19 17:38:49]
  • 提交

answer

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

const int N = 2049;

bool a[N][N];
bool g[N][N];
bool st[N], st2[N];
bitset<2 * N> f[N * 2];
int n, nn;
vector<pair<int, int>> ans;

void change(int x, int y){
    g[x][y] ^= 1;
    if(x == nn - 1)g[0][y] ^= 1;
    else g[x + 1][y] ^= 1;
    if(x == 0)g[nn - 1][y] ^= 1;
    else g[x - 1][y] ^= 1;
    if(y == nn - 1)g[x][0] ^= 1;
    else g[x][y + 1] ^= 1;
    if(y == 0)g[x][nn - 1] ^= 1;
    else g[x][y - 1] ^= 1;
}

int main(){
    scanf("%d", &n);
    nn = (1 << n);

    for(int i = 0; i < nn; i ++){
        for(int j = 0; j < nn; j ++){
            char s;
            scanf(" %c", &s);
            if(s == '1')g[i][j] = 1;
            else g[i][j] = 0;
        }
    }
        // for(int i = 0; i < nn; i ++){
        //     for(int j = 0; j < nn; j ++){
        //         if(g[i][j])printf("1 ");
        //         else printf("0 ");
        //     }
        //     puts("");
        // }
        // puts("");

    memcpy(a, g, sizeof(a));
        // for(int i = 0; i < nn; i ++){
        //     for(int j = 0; j < nn; j ++){
        //         if(a[i][j])printf("1 ");
        //         else printf("0 ");
        //     }
        //     puts("");
        // }
        // puts("");

    for(int i = 1; i < nn; i ++){
        for(int j = 0; j < nn; j ++){
            if(g[i - 1][j])change(i, j);
        }
    }
        // for(int i = 0; i < nn; i ++){
        //     for(int j = 0; j < nn; j ++){
        //         if(g[i][j])printf("1 ");
        //         else printf("0 ");
        //     }
        //     puts("");
        // }
        // puts("");

    memcpy(st, g[nn - 1], sizeof(st));
    memcpy(st2, g[0], sizeof(st2));
    memset(g, 0, sizeof(g));

    change(0, 0);
        // for(int i = 0; i < nn; i ++){
        //     for(int j = 0; j < nn; j ++){
        //         if(g[i][j])printf("1 ");
        //         else printf("0 ");
        //     }
        //     puts("");
        // }
        // puts("");
    for(int i = 1; i < nn; i ++){
        for(int j = 0; j < nn; j ++){
            if(g[i - 1][j])change(i, j);
        }

        // for(int i = 0; i < nn; i ++){
        //     for(int j = 0; j < nn; j ++){
        //         if(g[i][j])printf("1 ");
        //         else printf("0 ");
        //     }
        //     puts("");
        // }
        // puts("");
    }
    
    for(int i = 0; i < nn; i ++){
        for(int j = 0; j < nn; j ++){
            if(!g[nn - 1][j])continue;
            int t = (i + j) % nn;
            f[t + nn][i] = 1;
        }
        for(int j = 0; j < nn; j ++){
            if(!g[0][j])continue;
            int t = (i + j) % nn;
            f[t][i] = 1;
        }
    }

    memset(g, 0, sizeof(g));

    change(nn - 1, 0);
        // for(int i = 0; i < nn; i ++){
        //     for(int j = 0; j < nn; j ++){
        //         if(g[i][j])printf("1 ");
        //         else printf("0 ");
        //     }
        //     puts("");
        // }
        // puts("");

    for(int i = 1; i < nn; i ++){
        for(int j = 0; j < nn; j ++){
            if(g[i - 1][j])change(i, j);
        }

        // for(int i = 0; i < nn; i ++){
        //     for(int j = 0; j < nn; j ++){
        //         if(g[i][j])printf("1 ");
        //         else printf("0 ");
        //     }
        //     puts("");
        // }
        // puts("");
    }

    // for(int i = 0; i < nn; i ++){
    //     f[i][i] = f[i][i] ^ 1;
    //     if(i == 0)f[i][nn - 1] = f[i][nn - 1] ^ 1;
    //     else f[i][i - 1] = f[i][i - 1] ^ 1;
    //     if(i == nn - 1)f[i][0] = f[i][0] ^ 1;
    //     else f[i][i + 1] = f[i][i + 1] ^ 1;
    //     // f[i][nn] = st2[i];
    // }

    for(int i = 0; i < nn; i ++){
        for(int j = 0; j < nn; j ++){
            if(!g[nn - 1][j])continue;
            int t = (i + j) % nn;
            f[t + nn][i + nn] = 1;
        }
        for(int j = 0; j < nn; j ++){
            if(!g[0][j])continue;
            int t = (i + j) % nn;
            f[t][i + nn] = 1;
        }
    }

    for(int i = 0; i < nn; i ++)f[i][2 * nn] = st2[i];
    for(int i = 0; i < nn; i ++)f[i + nn][2 * nn] = st[i];


    // for(int i = 0; i < 2 * nn; i ++){
    //     for(int j = 0; j <= 2 * nn; j ++){
    //         if(f[i][j])printf("1 ");
    //         else printf("0 ");
    //     }

    //     puts("");
    // }
    // puts("");
    // puts("");

    int cnt = -1;
    for(int i = 0; i < 2 * nn; i ++){
        int t = -1;
        for(int j = cnt + 1; j < 2 * nn; j ++){
            if(f[j][i]){
                t = j;
                break;
            }
        }
        if(t == -1)continue;
        cnt ++;
        swap(f[t], f[cnt]);

        for(int j = cnt + 1; j < 2 * nn; j ++){
            if(f[j][i])f[j] ^= f[cnt];
        }
        
        
        // for(int i = 0; i < 2 * nn; i ++){
        //     for(int j = 0; j <= 2 * nn; j ++){
        //         if(f[i][j])printf("1 ");
        //         else printf("0 ");
        //     }

        //     puts("");
        // }
        // puts("");
        // puts("");
    }

    if(cnt < 2 * nn - 1){
        cerr << -1 << endl;
        return 0;
    }

    // for(int i = 0; i < 2 * nn; i ++){
    //     for(int j = 0; j <= 2 * nn; j ++){
    //         if(f[i][j])printf("1 ");
    //         else printf("0 ");
    //     }

    //     puts("");
    // }
    // puts("");
    // puts("");

    for(int i = 0; i <= cnt; i ++){
        for(int j = i - 1; j >= 0; j --){
            if(f[j][i])f[j] ^= f[i];
        }
    }

    // for(int i = 0; i < 2 * nn; i ++){
    //     for(int j = 0; j <= 2 * nn; j ++){
    //         if(f[i][j])printf("1 ");
    //         else printf("0 ");
    //     }

    //     puts("");
    // }
    // puts("");
    // puts("");

    // memset(g, 0, sizeof(g));
    // memcpy(g, a, sizeof(g));
    //     for(int i = 0; i < nn; i ++){
    //         for(int j = 0; j < nn; j ++){
    //             if(g[i][j])printf("1 ");
    //             else printf("0 ");
    //         }
    //         puts("");
    //     }
    //     puts("");

    // for(int i = 0; i < nn; i ++){
    //     if(f[i][2 * nn])change(0, i);
    // }
    // for(int i = 0; i < nn; i ++){
    //     if(f[i + nn][2 * nn])change(nn - 1, i);
    // }

    //     for(int i = 0; i < nn; i ++){
    //         for(int j = 0; j < nn; j ++){
    //             if(g[i][j])printf("1 ");
    //             else printf("0 ");
    //         }
    //         puts("");
    //     }
    //     puts("");
    // for(int i = 1; i < nn; i ++){
    //     for(int j = 0; j < nn; j ++){
    //         if(g[i - 1][j])change(i, j), ans.push_back({i, j});
    //     }
        
        // for(int i = 0; i < nn; i ++){
        //     for(int j = 0; j < nn; j ++){
        //         if(g[i][j])printf("1 ");
        //         else printf("0 ");
        //     }
        //     puts("");
        // }
        // puts("");
    // }
        // for(int i = 0; i < nn; i ++){
        //     for(int j = 0; j < nn; j ++){
        //         if(g[i][j])printf("1 ");
        //         else printf("0 ");
        //     }
        //     puts("");
        // }
        // puts("");

    memcpy(g, a, sizeof(a));

    // for(int i = 0; i < nn; i ++){
    //     for(int j = 0; j < nn; j ++){
    //         if(g[i][j])printf("1 ");
    //         else printf("0 ");
    //     }
    //     puts("");
    // }
    // puts("");

    for(int i = 0; i < nn; i ++){
        if(f[i][2 * nn])change(0, i), ans.push_back({0, i});
    }

    // for(int i = 0; i < nn; i ++){
    //     for(int j = 0; j < nn; j ++){
    //         if(g[i][j])printf("1 ");
    //         else printf("0 ");
    //     }
    //     puts("");
    // }
    // puts("");

    for(int i = 0 ; i < nn; i ++){
        if(f[i + nn][2 * nn])change(nn - 1, i), ans.push_back({nn - 1, i});
    }

    // for(int i = 0; i < nn; i ++){
    //     for(int j = 0; j < nn; j ++){
    //         if(g[i][j])printf("1 ");
    //         else printf("0 ");
    //     }
    //     puts("");
    // }
    // puts("");

    for(int i = 1; i < nn - 1; i ++){
        for(int j = 0; j < nn; j ++){
            if(g[i - 1][j])change(i, j), ans.push_back({i, j});
        }
    //     for(int i = 0; i < nn; i ++){
    //         for(int j = 0; j < nn; j ++){
    //             if(g[i][j])printf("1 ");
    //             else printf("0 ");
    //         }
    //         puts("");
    //     }
    //     puts("");
    }

    printf("%d\n", (int)ans.size());

    for(auto [u, v] : ans){
        printf("%d %d\n", u, v);
    }

    // for(int i = 0; i < nn; i ++){
    //     for(int j = 0; j < nn; j ++){
    //         if(g[i][j])printf("1 ");
    //         else printf("0 ");
    //     }
    //     puts("");
    // }
    // puts("");
}

詳細信息

Test #1:

score: 5
Accepted
time: 4ms
memory: 14096kb

input:

2
0 0 1 1
1 0 1 0
0 0 0 0
1 1 1 0

output:

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

result:

ok n=4

Test #2:

score: 5
Accepted
time: 4ms
memory: 13252kb

input:

2
0 0 0 1
1 0 0 0
1 1 0 1
1 0 1 1

output:

8
0 0
3 0
3 1
3 3
1 3
2 0
2 2
2 3

result:

ok n=4

Test #3:

score: 5
Accepted
time: 4ms
memory: 13936kb

input:

2
1 1 1 0
0 1 0 0
1 0 1 0
0 1 0 1

output:

8
0 1
0 3
3 3
1 0
1 2
2 0
2 2
2 3

result:

ok n=4

Test #4:

score: 5
Accepted
time: 4ms
memory: 13300kb

input:

2
1 0 1 1
1 0 1 0
0 1 1 0
1 1 1 0

output:

10
0 1
0 3
3 0
3 3
1 1
1 2
1 3
2 0
2 1
2 3

result:

ok n=4

Test #5:

score: 5
Accepted
time: 4ms
memory: 13792kb

input:

4
0 0 1 1 0 1 1 0 0 0 0 0 0 0 1 1
0 1 1 0 1 0 0 1 0 1 1 1 1 0 1 0
1 0 0 0 0 0 0 0 1 0 0 0 1 1 1 0
1 0 0 0 1 1 0 0 0 0 0 1 1 1 1 1
0 1 0 0 0 1 1 1 0 1 1 1 1 0 1 0
0 1 1 1 1 1 0 0 1 1 0 0 1 1 1 0
1 1 1 0 1 0 1 1 0 1 0 1 1 1 0 0
1 1 1 1 0 1 1 1 0 1 1 0 0 0 1 1
0 0 0 0 1 1 1 0 1 1 0 1 1 0 0 1
0 0 1 0 1 ...

output:

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

result:

ok n=16

Test #6:

score: 5
Accepted
time: 4ms
memory: 12940kb

input:

4
1 0 0 0 1 0 1 0 0 1 0 0 1 1 1 1
1 0 0 1 1 1 1 1 1 0 1 1 1 0 1 1
1 1 1 0 1 0 1 0 0 0 1 1 1 1 0 0
1 0 1 0 0 1 1 0 1 1 1 1 1 0 1 1
1 1 1 1 1 1 1 1 1 0 1 0 0 0 1 0
1 0 0 0 0 1 1 1 0 0 0 0 1 1 1 0
0 0 1 1 0 0 1 1 1 0 1 0 0 0 1 0
1 0 1 1 0 1 1 0 0 0 0 1 1 0 0 1
1 1 1 1 1 0 0 0 0 1 0 1 0 0 1 0
1 0 0 0 0 ...

output:

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

result:

ok n=16

Test #7:

score: 5
Accepted
time: 0ms
memory: 12304kb

input:

4
1 0 1 1 0 1 0 0 1 0 1 1 0 1 0 1
1 0 1 0 1 1 1 0 1 0 1 0 1 1 0 0
1 0 0 0 0 1 0 1 0 1 0 1 1 1 0 1
1 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1
0 1 1 0 1 0 0 1 0 1 1 0 1 1 0 0
0 0 0 1 0 1 1 0 0 0 1 0 1 1 1 1
0 1 0 0 1 0 0 0 1 1 0 0 1 1 1 1
1 1 0 1 1 1 0 1 1 0 1 0 0 1 0 0
1 1 1 0 1 0 0 1 1 1 1 0 0 1 0 0
1 1 1 1 0 ...

output:

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

result:

ok n=16

Test #8:

score: 5
Accepted
time: 6ms
memory: 12616kb

input:

7
1 1 1 1 1 1 0 0 0 1 1 1 0 1 1 1 1 1 0 0 0 1 1 1 0 1 1 1 1 1 1 0 1 0 0 0 0 1 1 1 0 0 1 1 1 1 0 0 1 0 0 1 1 0 1 0 1 1 1 1 1 0 0 1 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 1 1 1 1 0 1 0 0 1 0 1 1 0 0 1 0 1 0 1 0 1 0 1 1 0 0 1 0 0 1 1 1 1 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0
1 0 1 0 1 0 0 1 1 0 1 0 1 0 0 1 0 1 0 0 1 ...

output:

8269
0 1
0 3
0 4
0 6
0 8
0 9
0 10
0 12
0 14
0 15
0 16
0 17
0 18
0 20
0 21
0 22
0 27
0 28
0 33
0 35
0 37
0 38
0 39
0 41
0 42
0 47
0 48
0 50
0 53
0 56
0 57
0 58
0 71
0 72
0 76
0 78
0 79
0 80
0 81
0 82
0 83
0 86
0 89
0 92
0 93
0 94
0 98
0 99
0 100
0 102
0 106
0 108
0 110
0 117
0 119
0 120
0 121
0 123
0...

result:

ok n=128

Test #9:

score: 5
Accepted
time: 3ms
memory: 13464kb

input:

7
1 1 0 1 0 0 1 0 0 0 0 1 1 1 0 0 1 1 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 1 0 0 0 1 0 0 0 0 0 1 0 0 0 1 1 1 0 1 0 0 0 1 0 1 0 1 0 0 0 0 1 1 1 0 0 0 0 1 1 0 1 0 0 0 0 1 0 1 0 0 1 1 0 0 1 0 0 1 1 0 1 1 1 1 1 0 0 0 1 1 0 0 0 1 1 1 1 0 1 1 1 1 0 1 1 0 1 0 1 1 1
1 0 1 1 1 0 0 0 0 0 1 1 1 1 1 0 0 1 0 0 1 ...

output:

8192
0 0
0 5
0 6
0 7
0 8
0 9
0 11
0 12
0 13
0 15
0 16
0 20
0 24
0 28
0 29
0 30
0 31
0 32
0 35
0 36
0 37
0 39
0 45
0 48
0 51
0 52
0 55
0 56
0 57
0 62
0 64
0 65
0 68
0 70
0 75
0 76
0 77
0 78
0 80
0 81
0 82
0 84
0 85
0 86
0 88
0 89
0 94
0 97
0 103
0 104
0 105
0 106
0 107
0 109
0 112
0 113
0 114
0 115
0...

result:

ok n=128

Test #10:

score: 5
Accepted
time: 0ms
memory: 12532kb

input:

7
1 0 1 1 1 0 0 0 1 1 0 0 1 1 0 0 0 1 0 1 1 0 1 0 0 1 0 1 1 1 1 1 1 0 1 1 1 1 1 0 0 0 1 0 1 0 1 1 1 1 0 1 1 1 0 1 0 0 1 0 1 0 1 0 0 1 0 1 1 1 1 0 1 1 0 0 1 1 1 0 1 1 1 0 0 1 1 0 0 0 0 1 1 0 0 1 1 0 1 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 1 1 0 1 0 1 1 1 0 1 0 1 0 1
1 0 1 1 1 1 0 1 1 0 1 1 0 0 1 1 1 0 0 0 0 ...

output:

8280
0 0
0 1
0 3
0 4
0 6
0 9
0 11
0 14
0 20
0 21
0 23
0 24
0 25
0 26
0 28
0 29
0 31
0 34
0 38
0 40
0 45
0 52
0 53
0 54
0 55
0 56
0 60
0 61
0 64
0 65
0 66
0 69
0 70
0 71
0 72
0 74
0 75
0 78
0 80
0 81
0 89
0 90
0 92
0 94
0 95
0 97
0 98
0 100
0 102
0 106
0 113
0 114
0 119
0 120
0 121
0 122
0 125
0 126
...

result:

ok n=128

Test #11:

score: 5
Accepted
time: 458ms
memory: 47728kb

input:

11
1 1 0 1 1 1 1 0 0 1 0 0 1 0 0 0 1 0 1 1 1 0 0 0 1 1 1 1 0 1 0 1 1 0 0 0 0 0 1 1 0 0 1 0 0 0 1 0 0 1 1 0 1 0 1 1 1 1 0 0 0 0 1 0 0 0 0 1 1 1 0 1 0 1 0 0 1 1 1 1 1 0 0 0 0 1 0 1 0 1 1 0 1 1 0 0 0 0 1 0 0 1 0 1 1 1 0 0 0 0 1 1 1 1 0 1 1 1 1 0 0 1 0 1 0 1 0 0 1 1 1 0 0 0 0 1 0 0 0 0 1 0 1 1 0 1 1 0 1...

output:

2099200
0 1
0 3
0 4
0 5
0 6
0 7
0 8
0 11
0 16
0 19
0 21
0 27
0 29
0 30
0 31
0 34
0 35
0 38
0 40
0 41
0 42
0 46
0 47
0 53
0 59
0 61
0 62
0 63
0 64
0 65
0 67
0 68
0 73
0 83
0 84
0 86
0 87
0 89
0 92
0 94
0 95
0 99
0 100
0 101
0 103
0 108
0 109
0 110
0 113
0 115
0 117
0 118
0 119
0 124
0 127
0 129
0 131...

result:

ok n=2048

Test #12:

score: 5
Accepted
time: 459ms
memory: 47268kb

input:

11
1 1 1 1 0 0 0 0 1 1 1 1 0 1 1 0 0 1 0 0 0 0 1 0 1 1 1 0 0 0 1 1 0 0 0 1 1 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 1 0 1 1 1 0 0 1 1 0 1 0 0 1 1 0 1 1 1 1 1 1 0 0 0 0 0 1 1 0 1 1 1 0 0 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 1 0 0 0 1 1 1 1 0 0 1 0 1 0 0 1 1 1 1 1 1 0 1 1 0 0 0 0 1 1 1 0 0 1 0 1 0 0 0 1 1...

output:

2114816
0 1
0 2
0 4
0 8
0 12
0 13
0 14
0 16
0 18
0 23
0 24
0 27
0 29
0 33
0 37
0 38
0 42
0 43
0 45
0 46
0 47
0 48
0 49
0 50
0 51
0 54
0 56
0 57
0 58
0 63
0 65
0 68
0 69
0 70
0 71
0 73
0 75
0 80
0 81
0 82
0 85
0 92
0 93
0 94
0 97
0 98
0 102
0 104
0 105
0 107
0 111
0 112
0 113
0 116
0 117
0 119
0 121
...

result:

ok n=2048

Test #13:

score: 5
Accepted
time: 436ms
memory: 30600kb

input:

11
1 0 1 0 1 0 0 0 0 1 1 1 1 1 1 0 0 1 1 0 1 1 0 1 0 0 0 1 1 1 1 1 0 1 0 1 0 1 1 1 1 0 1 1 0 1 1 1 1 1 0 0 1 0 1 0 0 1 0 0 0 0 0 0 1 0 1 1 0 0 0 1 1 0 1 1 1 1 0 1 1 1 0 0 1 1 1 0 0 1 0 0 0 1 0 1 0 1 1 0 1 1 1 0 1 1 0 0 1 1 1 1 0 1 1 0 1 0 1 1 0 0 0 1 1 0 0 0 0 0 0 1 0 1 0 0 0 1 1 0 0 0 1 0 0 1 0 1 0...

output:

2094848
0 1
0 2
0 3
0 7
0 10
0 11
0 13
0 14
0 17
0 18
0 19
0 20
0 23
0 24
0 26
0 27
0 28
0 31
0 33
0 34
0 35
0 38
0 39
0 41
0 43
0 44
0 45
0 47
0 51
0 53
0 59
0 60
0 61
0 66
0 68
0 69
0 73
0 74
0 75
0 79
0 81
0 84
0 86
0 88
0 90
0 92
0 93
0 94
0 96
0 99
0 100
0 101
0 102
0 104
0 105
0 108
0 110
0 11...

result:

ok n=2048

Test #14:

score: 5
Accepted
time: 454ms
memory: 46660kb

input:

11
1 1 0 1 1 1 0 0 1 0 1 0 1 1 0 0 0 0 1 0 1 0 1 1 1 0 1 0 1 0 1 0 1 0 1 1 0 0 0 0 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 0 1 1 1 1 1 0 0 1 1 0 0 0 1 0 0 0 1 1 0 1 0 1 0 1 1 1 0 0 0 0 1 1 1 0 1 0 0 0 1 1 0 1 1 1 1 0 1 1 0 0 0 0 1 1 1 0 0 0 0 0 1 0 0 0 1 1 1 0 1 0 0 1 0 0 0 0 0 0 1 1 0 1 0 0 1 0 0 1 0 0 0 0 1...

output:

2131968
0 3
0 6
0 8
0 10
0 11
0 12
0 13
0 14
0 18
0 19
0 21
0 22
0 24
0 26
0 28
0 30
0 33
0 34
0 37
0 39
0 40
0 41
0 42
0 43
0 44
0 46
0 47
0 48
0 50
0 56
0 57
0 58
0 59
0 60
0 62
0 64
0 69
0 71
0 73
0 75
0 76
0 77
0 78
0 79
0 81
0 85
0 91
0 92
0 95
0 96
0 97
0 98
0 99
0 100
0 102
0 104
0 105
0 108
...

result:

ok n=2048

Test #15:

score: 5
Accepted
time: 464ms
memory: 47628kb

input:

11
1 1 0 0 0 0 1 0 1 1 1 0 0 1 1 0 1 1 1 1 0 0 0 0 0 1 0 0 1 1 0 1 1 0 0 0 1 0 1 1 0 0 1 0 1 0 0 0 0 1 1 1 1 1 1 0 1 0 0 0 0 0 1 0 0 0 1 0 1 0 1 0 0 0 1 1 1 0 1 1 0 1 1 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 1 1 1 0 0 0 1 0 1 1 1 1 0 0 0 1 1 0 1 1 1 0 1 1 1 1 1 1 0 0 0 1 0 1 1 0 1 1 1 1 1 1 0 1 0 0...

output:

2099200
0 0
0 1
0 3
0 5
0 6
0 8
0 9
0 11
0 15
0 19
0 20
0 21
0 23
0 24
0 25
0 27
0 28
0 29
0 30
0 31
0 32
0 36
0 38
0 39
0 40
0 42
0 46
0 48
0 49
0 51
0 52
0 55
0 57
0 59
0 61
0 62
0 64
0 65
0 66
0 67
0 68
0 69
0 71
0 73
0 74
0 77
0 78
0 79
0 80
0 85
0 92
0 93
0 94
0 95
0 96
0 99
0 101
0 102
0 105
0...

result:

ok n=2048

Test #16:

score: 5
Accepted
time: 452ms
memory: 46668kb

input:

11
1 0 1 1 1 1 0 0 1 1 0 0 1 1 1 1 0 0 0 0 0 1 0 0 0 1 1 0 1 1 0 0 1 1 1 1 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 1 1 0 0 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 1 0 1 0 0 0 1 0 0 0 0 0 0 1 1 1 0 0 0 1 0 0 1 1 0 1 0 1 1 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 1 1 0 1 1 0 1 1 0 1 1 1...

output:

2112256
0 0
0 1
0 5
0 6
0 8
0 9
0 12
0 13
0 15
0 20
0 21
0 23
0 25
0 28
0 29
0 30
0 32
0 35
0 36
0 37
0 39
0 40
0 41
0 42
0 43
0 45
0 46
0 48
0 54
0 56
0 57
0 60
0 62
0 63
0 64
0 65
0 66
0 68
0 73
0 74
0 75
0 78
0 79
0 87
0 88
0 90
0 91
0 93
0 96
0 100
0 101
0 102
0 103
0 107
0 111
0 112
0 114
0 116...

result:

ok n=2048

Test #17:

score: 5
Accepted
time: 463ms
memory: 30904kb

input:

11
0 1 0 0 0 1 0 0 1 0 0 0 0 1 1 1 0 1 1 1 0 1 0 1 1 1 0 1 1 0 0 1 1 0 0 1 0 1 1 1 0 1 1 0 0 1 0 0 1 0 1 1 0 1 0 1 1 0 0 1 1 0 1 1 1 1 1 1 0 0 0 1 1 0 1 1 1 1 0 0 1 0 1 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 1 1 1 1 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 1 1 1 1 0 1 1 0 1 0 0 1 0 0 0...

output:

2092288
0 2
0 3
0 8
0 9
0 10
0 12
0 13
0 14
0 16
0 17
0 20
0 21
0 22
0 27
0 29
0 30
0 32
0 34
0 35
0 37
0 39
0 42
0 45
0 46
0 47
0 49
0 51
0 58
0 62
0 63
0 64
0 71
0 73
0 74
0 76
0 79
0 81
0 83
0 84
0 85
0 89
0 90
0 91
0 95
0 96
0 97
0 99
0 100
0 101
0 109
0 111
0 113
0 114
0 115
0 119
0 121
0 124
0...

result:

ok n=2048

Test #18:

score: 5
Accepted
time: 461ms
memory: 31164kb

input:

11
0 0 1 0 0 0 0 0 1 1 0 0 0 0 1 0 1 0 1 1 0 0 0 1 0 1 0 1 0 1 0 1 1 0 1 1 0 0 0 0 1 1 0 0 0 1 0 0 1 1 0 1 1 0 0 1 0 1 1 0 0 0 1 1 0 0 0 1 0 1 1 1 0 1 0 1 1 1 1 0 1 0 1 0 0 0 1 0 0 1 0 0 0 0 1 0 1 1 1 0 0 0 1 1 1 1 0 0 1 0 0 0 1 0 1 0 1 0 0 0 1 1 1 1 1 0 1 1 0 1 1 0 0 1 1 0 0 1 0 1 0 1 0 0 0 0 0 0 1...

output:

2081792
0 2
0 7
0 8
0 9
0 11
0 14
0 15
0 18
0 19
0 20
0 21
0 22
0 24
0 25
0 27
0 28
0 29
0 30
0 32
0 35
0 36
0 42
0 43
0 44
0 45
0 46
0 48
0 49
0 53
0 54
0 55
0 57
0 59
0 60
0 61
0 64
0 65
0 67
0 68
0 71
0 72
0 73
0 74
0 76
0 77
0 78
0 79
0 81
0 83
0 84
0 85
0 89
0 90
0 94
0 95
0 96
0 97
0 99
0 102
...

result:

ok n=2048

Test #19:

score: 5
Accepted
time: 452ms
memory: 31316kb

input:

11
1 0 0 1 0 1 1 0 0 0 0 0 1 0 1 1 0 1 0 1 1 0 1 0 0 1 1 1 0 0 0 1 1 1 0 0 1 1 1 1 1 1 1 1 1 0 1 0 1 1 1 1 1 0 0 0 1 0 1 1 1 0 0 0 0 0 1 1 0 1 0 1 1 1 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 1 1 1 1 0 1 1 1 0 1 0 0 0 0 0 1 0 1 0 1 1 1 0 0 1 0 0 1 0 0 1 0 1 1 0 0 1 1 0 0 0 0 1 1 1 1 0 1 1 1 0 1 1 1 0...

output:

2088960
0 0
0 1
0 2
0 4
0 5
0 7
0 8
0 10
0 12
0 14
0 15
0 16
0 19
0 25
0 26
0 29
0 30
0 32
0 33
0 39
0 40
0 42
0 43
0 44
0 45
0 46
0 47
0 49
0 51
0 53
0 56
0 57
0 58
0 60
0 62
0 63
0 65
0 66
0 67
0 69
0 70
0 72
0 73
0 74
0 75
0 78
0 80
0 82
0 86
0 88
0 89
0 91
0 92
0 93
0 96
0 99
0 100
0 102
0 103
0...

result:

ok n=2048

Test #20:

score: 5
Accepted
time: 438ms
memory: 31452kb

input:

11
0 0 0 0 1 0 1 0 1 1 0 0 1 0 0 1 1 0 0 1 0 0 1 0 0 0 0 0 0 0 1 1 0 1 1 1 0 0 1 1 1 1 1 1 1 1 0 0 0 0 1 1 0 1 1 0 1 0 1 0 0 1 1 0 0 1 0 1 1 0 0 0 0 1 0 1 1 1 0 0 0 1 1 1 0 1 1 1 1 0 0 0 1 0 0 1 0 0 1 1 0 1 1 1 0 0 1 1 0 1 0 1 1 1 0 1 0 1 1 0 1 0 1 0 0 0 1 0 1 0 1 1 1 1 1 1 1 0 0 1 1 1 0 0 0 0 1 1 0...

output:

2093568
0 0
0 3
0 5
0 6
0 7
0 8
0 9
0 10
0 12
0 16
0 18
0 22
0 24
0 25
0 27
0 31
0 32
0 35
0 37
0 38
0 44
0 47
0 50
0 51
0 52
0 53
0 58
0 59
0 62
0 65
0 67
0 68
0 69
0 71
0 73
0 75
0 79
0 81
0 82
0 83
0 84
0 86
0 91
0 92
0 95
0 97
0 102
0 105
0 106
0 109
0 110
0 111
0 112
0 113
0 118
0 119
0 123
0 1...

result:

ok n=2048