QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#101889#6380. LaLa and Divination Magic123456AC ✓1383ms497888kbC++237.2kb2023-05-01 16:51:052023-05-01 16:51:14

Judging History

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

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2023-05-01 16:51:14]
  • 评测
  • 测评结果:AC
  • 用时:1383ms
  • 内存:497888kb
  • [2023-05-01 16:51:05]
  • 提交

answer

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

using ll = long long;
using pi = pair<int, int>;
#define mp make_pair
#define f first
#define s second

#define tcT template<class T
tcT> using V = vector<T>;
using vi = V<int>;
using vpi = V<pi>;
using vb = V<bool>;

#define sz(x) int((x).size())
#define all(x) begin(x), end(x)
#define pb push_back
#define rsz resize
#define bk back()

#define each(a, x) for(auto& a: x)
#define FOR(i,a,b) for(int i = (a); i < (b); ++i)
#define F0R(i,a) FOR(i,0,a)

// const int MOD = 1e9+7;
tcT> bool ckmin(T& a, const T& b){
	return b < a ? a = b, 1 : 0;
}

tcT> bool ckmax(T& a, const T& b){
	return a < b ? a = b, 1 : 0;
}

const int mx = 2005;

bool ansInTrie(vb ans){
	return true;
}

struct TwoSAT{
	int N = 0; vpi edges;
	void init(int _N) { N = _N;}
	int addVar() { return N++; }
	void either(int x, int y){
		x = max(2*x, -1-2*x), y = max(2*y, -1-2*y);
		edges.emplace_back(x, y);
	}

	vpi generateEdges(){
		vpi res;
		each(e, edges){
			//e.f^1, e.s
			res.pb(mp(e.f^1, e.s));
			//e.s^1, e.f
			res.pb(mp(e.s^1, e.f));
		}
		edges.clear();
		edges.pb(mp(-1, -1)); //DON'T USE THIS
		return res;
	}
};


using ull = unsigned long long;

struct bit {
	vector<ull> data;
	void init(int n) {
		data.resize((n >> 6) + 1);
	}
	void setOne(int i) {
		data[i >> 6] |= (ull)1 << (i & 63);
	}
	int count() {
		int res = 0;
		for (int i = 0; i < sz(data); i++) {
			res += __builtin_popcountll(data[i]);
		}
		return res;
	}
	int get(int i) {
		return (data[i >> 6] >> (i & 63)) & 1;
	}
};


void operator |= (bit &a, const bit &b) {
	for (int i = 0; i < sz(a.data); i++) {
		a.data[i] |= b.data[i];
	}
}



bool andEmpty(const bit &a, const bit &b) {
	for (int i = 0; i < sz(a.data); i++) {
		if (a.data[i] & b.data[i]) {
			return false;
		}
	}
	return true;
}


bit operator &(const bit &a, const bit &b) {
	bit c;
	c.data.resize(sz(a.data));
	for (int i = 0; i < sz(a.data); i++) {
		c.data[i] = a.data[i] & b.data[i];
	}
	return c;
}


bit operator ~(const bit &a) {
	bit c;
	c.data.resize(sz(a.data));
	for (int i = 0; i < sz(a.data); i++) {
		c.data[i] = ~a.data[i];
	}
	return c;
}

bool S[mx][mx];
bit columns[mx];
bit not_columns[mx];
int nxt[mx * mx][2];
int uk = 0;
int leaves[mx * mx];


void add(int i, int M) {
	int cur = 0;
	vector<int> d;
	for (int j = 0; j < M; j++) {
		d.pb(cur);
		if (nxt[cur][S[i][j]]) {
			cur = nxt[cur][S[i][j]];
		} else {
			uk++;
			nxt[cur][S[i][j]] = uk;
			cur = uk;
		}
	}
	for (auto x: d) {
		leaves[x]++;
	}
}


void dfs(int i, vector<bit> &bl, int u = 0) {
	if (!nxt[i][0] && !nxt[i][1]) {
		return;
	}
	if (!nxt[i][0] || !nxt[i][1]) {
		int t = (nxt[i][0] ? 0: 1);
		if (!bl[u * 2].get(u * 2 + 1) && !bl[u * 2 + 1].get(u * 2)) {
			cout << -1 << '\n';
			exit(0);
		}
		dfs(nxt[i][t], bl, u + 1);
		return;
	}
	int t = 0, t1 = 1;
	int lu = u * 2, ru = u * 2 + 1;
	if (leaves[nxt[i][t]] > leaves[nxt[i][t1]]) {
		swap(t, t1);
		swap(lu, ru);
	}
	auto bl1 = bl;
	for (int i = 0; i < sz(bl1); i++) {
		if (bl1[i].get(lu) && !bl1[i].get(ru)) {
			bl1[i] |= bl1[ru];
		}
	}
	dfs(nxt[i][t], bl1, u + 1);
	bl1.clear();
	bl1.shrink_to_fit();
	swap(lu, ru);
	for (int i = 0; i < sz(bl); i++) {
		if (bl[i].get(lu) && !bl[i].get(ru)) {
			bl[i] |= bl[ru];
		}
	}
	dfs(nxt[i][t1], bl, u + 1);
}

//BEGIN RICHARD CODE

struct SCC{
	int N, ti = 0; V<vi> adj;
	vi disc, comp, stk, comps;
	void init(int _N){
		N = _N, adj.rsz(N), disc.rsz(N), comp.rsz(N, -1);
	}
	void ae(int x, int y){
		// cout << "N = " << N << "\n";
		// cout << "ADDING: " << x << " " << y << "\n"; cout.flush();
		adj[x].pb(y);
	}
	int dfs(int x){
		// cout << "HI" << x << "\n"; cout.flush();
		int low = disc[x] = ++ti; stk.pb(x);
		each(y, adj[x]) if(comp[y] == -1)
			ckmin(low, disc[y]?:dfs(y));
		// cout << "HERE!" << "\n";
		if(low == disc[x]){
			// cout << "HERE2!" << "\n";
			comps.pb(x); for(int y = -1; y != x;)
				comp[y = stk.bk] = x, stk.pop_back();
		}
		// cout << "HERE3!" << "\n";
		return low;
	}

	void gen(){
		F0R(i,N) if(!disc[i]) dfs(i);
		reverse(all(comps));

		// cout << "END" << "\n"; cout.flush();
	}
};

vector<bit> DP;
vector<bit> getReachability(vpi edges, int N){
	SCC scc; scc.init(2*N);
	for(auto u: edges){
		scc.ae(u.f, u.s);	
	}
	scc.gen();

	V<vi> comp_adj(2*N);
	for(auto u: edges){
		comp_adj[scc.comp[u.f]].pb(scc.comp[u.s]);
	}

	DP = vector<bit>(2*N);
	for(int i = 0; i < 2*N; i++){
		DP[i].init(2 * N);
	}
	for(int i = 0; i < 2*N; i++){
		DP[scc.comp[i]].setOne(i);
	}

	for(int comps_ind = sz(scc.comps)-1; comps_ind >= 0; comps_ind--){
		int comp = scc.comps[comps_ind];
		if (comp_adj[comp].empty()) {
			continue;
		}
		sort(all(comp_adj[comp]));
		comp_adj[comp].resize(distance(comp_adj[comp].begin(), unique(all(comp_adj[comp]))));
		for(auto u: comp_adj[comp]){
			if(comp == u) continue;
			DP[comp]|=DP[u];
		}
	}

	for(int i = 0; i < 2*N; i++){
		if(scc.comp[i] != i){
			DP[i] |= DP[scc.comp[i]];
		}
	}

	return DP;
}

int main(){
	cin.tie(0)->sync_with_stdio(0);


	int N, M; cin >> N >> M;
	for(int i = 0; i < N; i++){
		string row; cin >> row;
		for(int j = 0; j < M; j++){
			S[i][j] = row[j]-'0';
		}
		add(i, M);
	}
	for(int j = 0; j < M; j++){
		columns[j].init(N);
		not_columns[j].init(N);
	}
	for(int i = 0; i < N; i++){
		for(int j = 0; j < M; j++){
			if (S[i][j]) {
				columns[j].setOne(i);
			}
		}
	}

	bit MASK;
	MASK.init(N);
	for(int i = 0; i < N; i++){
		MASK.setOne(i);
	}
	for(int j = 0; j < M; j++){
		not_columns[j] = ~columns[j]&MASK;
	}

	

	V<vi> ans;
	TwoSAT twosat; twosat.init(M);

	// for(int col = 0; col < M; col++){
	// 	string str;
	// 	for(int i = 0; i < N; i++){
	// 		str+=char('0' + columns[col][i]);
	// 	}
	// 	cout << "col: " << col <<": "<< str << "\n";
	// }

	for(int j = 0; j < M; j++){
		//check whether the entire column is 1, or all 0
		if(columns[j].count() == N){ //1 is salvation
			ans.pb(vi{j, j, 4});
			twosat.either(j, j);
		}
		else if(columns[j].count() == 0){
			ans.pb(vi{j, j, 1});
			twosat.either(~j, ~j);
		}

		for(int j2 = j+1; j2 < M; j2++){
			//check whether 00 appears
			if(andEmpty(not_columns[j], not_columns[j2])){
				//does not appear
				ans.pb(vi{j, j2, 4});
				twosat.either(j, j2);
			}
			//check 01
			if(andEmpty(not_columns[j], columns[j2])){
				//does not appear
				ans.pb(vi{j, j2, 2});
				twosat.either(j, ~j2);
			}
			//check 10
			if(andEmpty(columns[j], not_columns[j2])){
				//does not appearn
				ans.pb(vi{j, j2, 3});
				twosat.either(~j, j2);
			}

			//check 11
			if(andEmpty(columns[j], columns[j2])){
				//does not appear
				ans.pb(vi{j, j2, 1});
				twosat.either(~j, ~j2);
			}
		}
	}

	vpi edges = twosat.generateEdges();
	vector<bit> bl = getReachability(edges, M);
	// vector<bit> bl(2 * N);
	// for (int i = 0; i < 2 * N; i++) {
	// 	bl[i][i] = true;
	// }

	dfs(0, bl);

	string OUTPUT = "";
	OUTPUT += to_string(sz(ans)) + "\n";
	for(auto u: ans){
		OUTPUT+=to_string(u[0]) + " "  + to_string(u[1]) + " " + to_string(u[2]) + "\n";
	}
	cout << OUTPUT << "\n";
}

详细

Test #1:

score: 100
Accepted
time: 3ms
memory: 7488kb

input:

2 1
1
0

output:

0


result:

ok Kout = 0, Kans = 0

Test #2:

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

input:

3 3
101
011
111

output:

6
0 1 4
0 2 4
0 2 3
1 2 4
1 2 3
2 2 4


result:

ok Kout = 6, Kans = 6

Test #3:

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

input:

2 1
0
1

output:

0


result:

ok Kout = 0, Kans = 0

Test #4:

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

input:

2 1
0
1

output:

0


result:

ok Kout = 0, Kans = 0

Test #5:

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

input:

2 1
1
0

output:

0


result:

ok Kout = 0, Kans = 0

Test #6:

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

input:

2 1
0
1

output:

0


result:

ok Kout = 0, Kans = 0

Test #7:

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

input:

2 1
0
1

output:

0


result:

ok Kout = 0, Kans = 0

Test #8:

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

input:

2 1
1
0

output:

0


result:

ok Kout = 0, Kans = 0

Test #9:

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

input:

1 1
1

output:

1
0 0 4


result:

ok Kout = 1, Kans = 1

Test #10:

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

input:

1 1
0

output:

1
0 0 1


result:

ok Kout = 1, Kans = 1

Test #11:

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

input:

2 1
1
0

output:

0


result:

ok Kout = 0, Kans = 0

Test #12:

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

input:

2 1
1
0

output:

0


result:

ok Kout = 0, Kans = 0

Test #13:

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

input:

2 4
0111
0010

output:

15
0 0 1
0 1 3
0 1 1
0 2 4
0 2 3
0 2 1
0 3 3
0 3 1
1 2 4
1 2 3
1 3 2
1 3 3
2 2 4
2 3 4
2 3 2


result:

ok Kout = 15, Kans = 15

Test #14:

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

input:

2 1
1
0

output:

0


result:

ok Kout = 0, Kans = 0

Test #15:

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

input:

4 2
10
11
01
00

output:

0


result:

ok Kout = 0, Kans = 0

Test #16:

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

input:

2 1
1
0

output:

0


result:

ok Kout = 0, Kans = 0

Test #17:

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

input:

2 4
0010
1000

output:

15
0 1 2
0 1 1
0 2 4
0 2 1
0 3 2
0 3 1
1 1 1
1 2 3
1 2 1
1 3 2
1 3 3
1 3 1
2 3 2
2 3 1
3 3 1


result:

ok Kout = 15, Kans = 15

Test #18:

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

input:

2 5
11101
00000

output:

21
0 1 2
0 1 3
0 2 2
0 2 3
0 3 2
0 3 1
0 4 2
0 4 3
1 2 2
1 2 3
1 3 2
1 3 1
1 4 2
1 4 3
2 3 2
2 3 1
2 4 2
2 4 3
3 3 1
3 4 3
3 4 1


result:

ok Kout = 21, Kans = 21

Test #19:

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

input:

5 4
0010
1001
0011
0101
1011

output:

-1

result:

ok Kout = -1, Kans = -1

Test #20:

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

input:

3 2
01
00
10

output:

1
0 1 1


result:

ok Kout = 1, Kans = 1

Test #21:

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

input:

3 2
10
11
00

output:

1
0 1 2


result:

ok Kout = 1, Kans = 1

Test #22:

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

input:

2 1
0
1

output:

0


result:

ok Kout = 0, Kans = 0

Test #23:

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

input:

3 27
111010110011101010011110110
010001110100000110100101101
000011111000000010011111001

output:

-1

result:

ok Kout = -1, Kans = -1

Test #24:

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

input:

3 7
1000100
0001100
0101111

output:

39
0 1 1
0 2 2
0 2 1
0 3 4
0 3 1
0 4 4
0 4 3
0 5 1
0 6 1
1 2 2
1 2 1
1 3 3
1 4 4
1 4 3
1 5 2
1 5 3
1 6 2
1 6 3
2 2 1
2 3 3
2 3 1
2 4 4
2 4 3
2 4 1
2 5 3
2 5 1
2 6 3
2 6 1
3 4 4
3 4 3
3 5 2
3 6 2
4 4 4
4 5 4
4 5 2
4 6 4
4 6 2
5 6 2
5 6 3


result:

ok Kout = 39, Kans = 39

Test #25:

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

input:

1 19
1010110011001101000

output:

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

result:

ok Kout = 532, Kans = 532

Test #26:

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

input:

5 32
10101101001001001101111100100110
00110110010111010101011000011010
01010101110100000110001000010100
11010011000110101101110001011111
00111001110011110000000010000111

output:

-1

result:

ok Kout = -1, Kans = -1

Test #27:

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

input:

3 12
110010101000
110001011000
110101011001

output:

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

result:

ok Kout = 145, Kans = 145

Test #28:

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

input:

3 25
1110100100011100101100111
0100000001011101101010101
0111110111111001001110111

output:

-1

result:

ok Kout = -1, Kans = -1

Test #29:

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

input:

1 5
10110

output:

35
0 0 4
0 1 4
0 1 2
0 1 1
0 2 4
0 2 2
0 2 3
0 3 4
0 3 2
0 3 3
0 4 4
0 4 2
0 4 1
1 1 1
1 2 4
1 2 3
1 2 1
1 3 4
1 3 3
1 3 1
1 4 2
1 4 3
1 4 1
2 2 4
2 3 4
2 3 2
2 3 3
2 4 4
2 4 2
2 4 1
3 3 4
3 4 4
3 4 2
3 4 1
4 4 1


result:

ok Kout = 35, Kans = 35

Test #30:

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

input:

5 17
01011100010100110
01001101111011001
00100111001101010
10101000001010110
00101011010010001

output:

-1

result:

ok Kout = -1, Kans = -1

Test #31:

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

input:

3 30
010100010011100011010001010100
011111100101001100010101010010
011000010111111111000101101110

output:

-1

result:

ok Kout = -1, Kans = -1

Test #32:

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

input:

5 30
110010101001001100010110010000
011011111000011001101000100000
110101010111000000100100111000
001111011110101101101001101011
101100001101011110101010110000

output:

-1

result:

ok Kout = -1, Kans = -1

Test #33:

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

input:

10 10
0110101111
1100100000
1000101100
1000010101
1001011101
1011101101
1011111011
0101010000
0111011010
1111010110

output:

-1

result:

ok Kout = -1, Kans = -1

Test #34:

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

input:

9 10
1000001101
0110010110
1011101111
1010001110
1110001000
1001110110
1101010010
0001011111
1000010100

output:

-1

result:

ok Kout = -1, Kans = -1

Test #35:

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

input:

3 5
11111
01000
01100

output:

18
0 1 4
0 1 3
0 2 3
0 3 2
0 3 3
0 4 2
0 4 3
1 1 4
1 2 4
1 2 2
1 3 4
1 3 2
1 4 4
1 4 2
2 3 2
2 4 2
3 4 2
3 4 3


result:

ok Kout = 18, Kans = 18

Test #36:

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

input:

7 9
000010100
101001100
110010111
000000110
100010101
101000100
101101100

output:

-1

result:

ok Kout = -1, Kans = -1

Test #37:

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

input:

1 4
0000

output:

22
0 0 1
0 1 2
0 1 3
0 1 1
0 2 2
0 2 3
0 2 1
0 3 2
0 3 3
0 3 1
1 1 1
1 2 2
1 2 3
1 2 1
1 3 2
1 3 3
1 3 1
2 2 1
2 3 2
2 3 3
2 3 1
3 3 1


result:

ok Kout = 22, Kans = 22

Test #38:

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

input:

9 8
10011110
10111101
11001010
01000101
10110011
00101001
00101100
11010110
01000000

output:

-1

result:

ok Kout = -1, Kans = -1

Test #39:

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

input:

3 10
0000000111
1011011111
0101111010

output:

-1

result:

ok Kout = -1, Kans = -1

Test #40:

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

input:

2 1
1
0

output:

0


result:

ok Kout = 0, Kans = 0

Test #41:

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

input:

1 5
00110

output:

35
0 0 1
0 1 2
0 1 3
0 1 1
0 2 4
0 2 3
0 2 1
0 3 4
0 3 3
0 3 1
0 4 2
0 4 3
0 4 1
1 1 1
1 2 4
1 2 3
1 2 1
1 3 4
1 3 3
1 3 1
1 4 2
1 4 3
1 4 1
2 2 4
2 3 4
2 3 2
2 3 3
2 4 4
2 4 2
2 4 1
3 3 4
3 4 4
3 4 2
3 4 1
4 4 1


result:

ok Kout = 35, Kans = 35

Test #42:

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

input:

6 9
100101111
100001110
100101010
001101000
101100010
010101110

output:

-1

result:

ok Kout = -1, Kans = -1

Test #43:

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

input:

6 836
001111110001001001101010101010011100010100100100111110110100101000100100000000011101110001011100111111111001101111111101101110010011000100100111111101011010101101011101010000100011100011000011111011011110000001010101001101110100001111111001000110111000010110001100110010010000101011001010101100...

output:

-1

result:

ok Kout = -1, Kans = -1

Test #44:

score: 0
Accepted
time: 899ms
memory: 497888kb

input:

1 1680
00110010011001010101000101001110100010100110000110011101101101011011011011011011000000100100001111110111011001000010100101111110011000011110001000000001001010010110001011101000000110011010000001101010010000101111000010110001001010000010001010110000110111011011001011010011100111110000100110110...

output:

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

result:

ok Kout = 4232760, Kans = 4232760

Test #45:

score: 0
Accepted
time: 17ms
memory: 21020kb

input:

5 525
010011011010110111000101111001010011110110100011110111000110010010000011011011110001110100110101101111111001100010010011011011011101110010011011001111110100010011011001010111011001100011001000101100111000000100010100011011011110101010000011101110001001000000100101000000101011101010110101010110...

output:

-1

result:

ok Kout = -1, Kans = -1

Test #46:

score: 0
Accepted
time: 56ms
memory: 42408kb

input:

9 1369
10111110110000010001000001110000001000010000101111010111111000100001001011101000101011000111001000010110010100011001110101100010000010000010100010011100110011000011110001001001010100010100001111111000111110100100010000100100110111110101100011010100000011000011010111111101011001011001010010110...

output:

-1

result:

ok Kout = -1, Kans = -1

Test #47:

score: 0
Accepted
time: 78ms
memory: 81780kb

input:

7 1509
10100001100101000101100011100001010001111101001010100101000010000100010000100110001011000011111000111100011100000110100100011010011111011100111010101011110111011011100100101110011000110111100101101011010101100011101011110001011101001011010100000011001001110100111101101001100110101111011010011...

output:

-1

result:

ok Kout = -1, Kans = -1

Test #48:

score: 0
Accepted
time: 33ms
memory: 28304kb

input:

1 354
101000111100100010011000000111001111100100100101111010100100101010111001011110011010111111010010101111101101101010100011010000011011010101000011010000001101110011011000101101111011111001011010111100100001100000110000110011101011010011110011001100101100011101100010101001100101110011001011001011...

output:

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

result:

ok Kout = 187797, Kans = 187797

Test #49:

score: 0
Accepted
time: 61ms
memory: 60380kb

input:

5 1006
00111100011111100001101011101101000101000011011000111111110010111011001101010000100011001000000111001011010000001110010000101000010111100101100101101000110000011011101010111110101110100110000011001000010000011111000001011111101010110011100110010011010000000000100000111101000001000100101110100...

output:

-1

result:

ok Kout = -1, Kans = -1

Test #50:

score: 0
Accepted
time: 83ms
memory: 67460kb

input:

9 1851
11000110100010011010000110010000010111101010100110011010100101110011100000101101001010000010001011111110100001101000001101111011011011011110010110000111001101110011001011111001110001011101100110111111100101100101000110010001011001100101010111100000101111010110010000110111010100011010111101110...

output:

-1

result:

ok Kout = -1, Kans = -1

Test #51:

score: 0
Accepted
time: 17ms
memory: 21160kb

input:

7 695
001100011101000101000011101100000101000000010110110101110110100101010100100111101110100100110101110100111000011000000101111101010100010010101011100101111001100001101111000111000111010110101101001111110111110001010011011111110111111010101010100100111010101010100111110011001100101100110010111101...

output:

-1

result:

ok Kout = -1, Kans = -1

Test #52:

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

input:

8 231
010111111111010000001100101001011111011010100101010100111010100110111011111111101110001100001001101110001001000000001110010010010110011001011110100110110110101100101110101100101011000001101111101001110000101110110010000100111101010
00010011100001101010000101100000110001010100100010110011011111...

output:

-1

result:

ok Kout = -1, Kans = -1

Test #53:

score: 0
Accepted
time: 35ms
memory: 56580kb

input:

1751 1586
01101110101110010111101111101010000000001010101101111100000001001100010101101011011111100010010111010010010010111101000011101101010110011100010001111110110011001111111111010000101011010111101110010101010011100110001111101111010000001111101111101011110100011101101100000011100110100110000000...

output:

-1

result:

ok Kout = -1, Kans = -1

Test #54:

score: 0
Accepted
time: 25ms
memory: 35396kb

input:

1879 942
000110000110010111010100001100110100110111110010011011100000001111011000110000000001110001001111110000010000110101111011101001001110000101111111101100101100110111111011001011001101101000011000000011110000011111111000010111000000001011101101110100011111101000110101000010011110101011110001111...

output:

-1

result:

ok Kout = -1, Kans = -1

Test #55:

score: 0
Accepted
time: 6ms
memory: 21652kb

input:

599 1083
111111011111001001100010010111010010011010111001100010011000101111110011111111000001001000000011110101011100100100000000001010100100011010010111010111011101010101010011001101100101011001110010111100000110111001000000100001111110000011001000100111100000110100100110010001011100101101111000110...

output:

-1

result:

ok Kout = -1, Kans = -1

Test #56:

score: 0
Accepted
time: 27ms
memory: 43904kb

input:

727 1927
001101011110100000000001100011110010101101011100011010001000111100001001110000111101111101101111111101011111110111010100110000100011110110001110011000101001001001001100101110111111111000011110111110010111110111111101000010011011000010111011010110100110101010100111010011110101000111101000001...

output:

-1

result:

ok Kout = -1, Kans = -1

Test #57:

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

input:

151 772
0011100000111101101010100111100010111101101001001010101000110100000010101010011001011010111110011100101101011110010000101110111011001110111110110011011001111101010011010110111011010011011001111101001100111001110110111001011010110100000000010101110000101011101001001110111011000000100100010000...

output:

-1

result:

ok Kout = -1, Kans = -1

Test #58:

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

input:

279 912
1101101011000001010100111010110010110011000101001111100000100001110011010010001101010100000111011101111010100010100011001010010100110111000000001010010110111000110100010011101010011111010001011011100011011101101100110001111011101010000011000111001010001010110110000111001001100100100111100001...

output:

-1

result:

ok Kout = -1, Kans = -1

Test #59:

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

input:

1704 460
011100111111111110111100000010110110000111101010010100101100011011110101100111010000101111110001100100110111010100110011000011001100111101110110001010010010111110110000000000100111110110011000011110010101100101011011001001111010110010110011110011011100110111010111110111100010110010000101110...

output:

-1

result:

ok Kout = -1, Kans = -1

Test #60:

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

input:

1128 409
110010110101001111011001011001011000001111001001010001010110111111101101000111111110110110000111100001000010110010110010111001101111010010100000100000011100110010001010010010010000101100011010010111011110111010010010010110101100001001111111100111100000111010010001101010010011100010001110001...

output:

-1

result:

ok Kout = -1, Kans = -1

Test #61:

score: 0
Accepted
time: 15ms
memory: 35720kb

input:

1256 1253
00001111110000100001010011101010110110011010100000000010110000001011100101111001010101010001001100100011010101101100110100101011100100101101000111001010001010011101100000101101110100111100111101100100110100110010010000011001111100111111011111101101001111101000111111100010101111101111001001...

output:

-1

result:

ok Kout = -1, Kans = -1

Test #62:

score: 0
Accepted
time: 22ms
memory: 33128kb

input:

1537 1004
11100001111000100101010000101010000001010011001001110010100111110000000100110110010100111001010100001110001101111111111010001101001100110100110011100010001001110111111110110110111111000110011100000101100010110111110000000110011010001100100111111111011100110000101110010111111011110101000111...

output:

-1

result:

ok Kout = -1, Kans = -1

Test #63:

score: 0
Accepted
time: 1342ms
memory: 290392kb

input:

2000 2000
00111010010010101011100101011110001000011110110110001001100001011010001110101110010111011100100111000011111100100110100110110000111111110010111100011110000000000010100010000001000100111000001110111111011101111010100110001111100111001100001001101011011101001011101000111011001011000101111101...

output:

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

result:

ok Kout = 2001000, Kans = 2001000

Test #64:

score: 0
Accepted
time: 1301ms
memory: 290016kb

input:

2000 2000
11101000100100110110110111100101111011101100110011001100010000010100011100000001100000111100000101101011000011010011111100111010101001101001110011110100011111011000011100000111010101111001001011000111011010011110100011001111100000001111110010111001000010000000000111100101011001011100111101...

output:

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

result:

ok Kout = 2001000, Kans = 2001000

Test #65:

score: 0
Accepted
time: 1287ms
memory: 289924kb

input:

2000 2000
11000010000110011011110010001111100101100111010111000100000000001001110111101110111000011010101101100011100101001101100100101100111001100100101010100101000100000101110011110001101101001001101101011110011101100000100111111100110011010011100001010001111001001111000110111011111001001010001101...

output:

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

result:

ok Kout = 2001000, Kans = 2001000

Test #66:

score: 0
Accepted
time: 1327ms
memory: 290016kb

input:

2000 2000
10000000000101110100100101010010001110001100110100111110010000100100000100000000010100000001100010100101111011011101111010111110001100100001100011011101101101101001001010010100101011010001010110000000011011000110000111110011111101011111111110010110011111001010000110010010110110001110110101...

output:

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

result:

ok Kout = 2001000, Kans = 2001000

Test #67:

score: 0
Accepted
time: 1321ms
memory: 287628kb

input:

2000 2000
00100000000100010100101000010011001001111100100011100001100100111010000001000110100011011101010011100101101011011011011110100010011011101101111111000010001001111111111111100111100010101100101000100101011000011010100100111110100011100011110000111101011000010111010011101100101000010010001001...

output:

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

result:

ok Kout = 2001000, Kans = 2001000

Test #68:

score: 0
Accepted
time: 1312ms
memory: 289860kb

input:

2000 2000
00100101010000000000000111001011100001100111111110111110001000110111010001001111000010110111111011001011110101000011101110000110010010101100101000111111001110011100111100011110010100011000000011100000101010011001111001010000110100000101110010100101111010100100101010001100100000110111111111...

output:

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

result:

ok Kout = 2001000, Kans = 2001000

Test #69:

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

input:

2000 2000
01111100110010011110000111001100000111000000101101110101111011011110100011101001110101011100110110110011100000100111010010010010110010111111010111011111111001001001001110111011010011000000011010010110011111000111011110101000011010100101100010100101101000100010111001101101001010011000100100...

output:

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

result:

ok Kout = 2001000, Kans = 2001000

Test #70:

score: 0
Accepted
time: 1383ms
memory: 291828kb

input:

2000 2000
10111110101111011000011101110000100100110001110000100010110010101111110001100010100101000100101101101010111001001111000010000110111100111100111100010000101100111010011111011110111010111110011111111010000001101101010111011001000011111111110111111100110111001011010100101100010000001111000010...

output:

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

result:

ok Kout = 2001000, Kans = 2001000

Test #71:

score: 0
Accepted
time: 1335ms
memory: 289808kb

input:

2000 2000
11100100001101010101010010010001010011100011010100110111000100101110000010000000111100011110001101000000110000101011001010011000000101000100110010111100100100111011110011000010001000101011111100110000111001000111101110001111011011000011100100101011110100111000010000100101100100111010010100...

output:

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

result:

ok Kout = 2001000, Kans = 2001000

Test #72:

score: 0
Accepted
time: 1347ms
memory: 290036kb

input:

2000 2000
01011010010100100110011111110101001010000110000100101000010010111100101001010010101111001011011101111010010111110111111111100000111000001110001101010010001010000110110011110001010110011111000100111100010111000111000110111011010011111100100010011011000000010101001010110010101010001001101001...

output:

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

result:

ok Kout = 2001000, Kans = 2001000