1
-
2
1
// @brief Matrix Product (Mod 2)
3
2
#define PROBLEM " https://judge.yosupo.jp/problem/matrix_product_mod_2"
4
3
#pragma GCC optimize("Ofast,unroll-loops")
4
+ #define CP_ALGO_CHECKPOINT
5
5
#include " cp-algo/structures/bitpack.hpp"
6
+ #include " cp-algo/util/checkpoint.hpp"
6
7
#include < bits/stdc++.h>
7
8
8
9
using namespace std ;
@@ -25,6 +26,7 @@ void process_precalc() {
25
26
}
26
27
27
28
void solve () {
29
+ cp_algo::checkpoint (" init" );
28
30
int n, m, k;
29
31
cin >> n >> m >> k;
30
32
string row;
@@ -36,18 +38,23 @@ void solve() {
36
38
cin >> row;
37
39
b[i] = row;
38
40
}
41
+ cp_algo::checkpoint (" read" );
39
42
process_precalc ();
43
+ cp_algo::checkpoint (" precalc" );
40
44
for (int j =0 ; j < m; j +=64 ) {
41
45
for (int z =0 ; z <64 / K; z++) {
42
46
for (int i =0 ; i < n; i++) {
43
47
c[i] ^= precalc[j / K + z][uint8_t (a[i].word (j /64 ) >> K * z)];
44
48
}
45
49
}
46
50
}
51
+ cp_algo::checkpoint (" mul" );
47
52
for (int i =0 ; i < n; i++) {
48
53
row = c[i].to_string ().substr (0 , k);
49
54
cout << row <<" \n " ;
50
55
}
56
+ cp_algo::checkpoint (" write" );
57
+ cp_algo::checkpoint<1 >();
51
58
}
52
59
53
60
signed main () {