CSES - Putka Open 2015 – 6/6 - Results
Submission details
Task:Shakki
Sender:
Submission time:2015-12-06 15:12:37 +0200
Language:C++
Status:READY
Result:100
Feedback
groupverdictscore
#1ACCEPTED28
#2ACCEPTED21
#3ACCEPTED24
#4ACCEPTED27
Test results
testverdicttimegroup
#1ACCEPTED0.06 s1details
#2ACCEPTED0.05 s1details
#3ACCEPTED0.04 s1details
#4ACCEPTED0.05 s1details
#5ACCEPTED0.05 s1details
#6ACCEPTED0.06 s1details
#7ACCEPTED0.05 s1details
#8ACCEPTED0.05 s1details
#9ACCEPTED0.05 s1details
#10ACCEPTED0.05 s1details
#11ACCEPTED0.06 s2details
#12ACCEPTED0.05 s2details
#13ACCEPTED0.05 s2details
#14ACCEPTED0.06 s2details
#15ACCEPTED0.05 s2details
#16ACCEPTED0.05 s2details
#17ACCEPTED0.09 s2details
#18ACCEPTED0.06 s2details
#19ACCEPTED0.05 s2details
#20ACCEPTED0.05 s2details
#21ACCEPTED0.06 s3details
#22ACCEPTED0.05 s3details
#23ACCEPTED0.05 s3details
#24ACCEPTED0.06 s3details
#25ACCEPTED0.05 s3details
#26ACCEPTED0.06 s3details
#27ACCEPTED0.05 s3details
#28ACCEPTED0.04 s3details
#29ACCEPTED0.04 s3details
#30ACCEPTED0.06 s3details
#31ACCEPTED0.06 s4details
#32ACCEPTED0.06 s4details
#33ACCEPTED0.06 s4details
#34ACCEPTED0.05 s4details
#35ACCEPTED0.04 s4details
#36ACCEPTED0.05 s4details
#37ACCEPTED0.05 s4details
#38ACCEPTED0.06 s4details
#39ACCEPTED0.05 s4details
#40ACCEPTED0.07 s4details

Compiler report

input/code.cpp: In function 'int main()':
input/code.cpp:155:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for (int i = 0; i < moves.size() / 2; ++i)
                    ^

Code

#include <vector>
#include <iostream>
#include <cstdio>
#include <unistd.h>

using namespace std;


int main() {
	int b[8][8];
	vector<int> moves;

	/*auto print_board = [&]() {
		for (int i = 0; i < 8; ++i) {
			for (int j = 0; j < 8; ++j) {
				cout << b[i][j];
			}
			cout << "\n";
		}
	};*/

	auto rot = [&] (int i, int j) {
		char c = b[i][j];
		b[i][j] = b[i+1][j];
		b[i+1][j] = b[i+1][j+1];
		b[i+1][j+1] = b[i][j+1];
		b[i][j+1] = c;
		moves.push_back(i);
		moves.push_back(j);
		//cout << "rot(" << i << "," << j << ")\n";
		//print_board();
		//cout << "\n";
		//sleep(1);
	};
	
	auto get = [&] (int c, int i, int j) {
		int i0 = i;
		int j0 = j;
		++i;
		--j;
		while (true) {
			while (j >= 0) {
				if (b[i][j] == c) {
					if (i > i0) {
						rot(i-1, j);
						--i;
					}
					while (j == 0 || j < j0) {
						rot(i, j);
						++j;
					}
					if (i == 0) {
						rot(i, j-1);
						++i;
					}
					while (j > j0 + 1) {
						rot(i-1, j-1);
						--j;
					}
					while (i < i0) {
						rot(i, j-1);
						++i;
					}
					return;
				}
				--j;
			}
			--i;
			j = 7;
		}
	};

	auto get2 = [&] (int c, int i, int j) {
		int i0 = i;
		int j0 = j;
		++i;
		--j;
		while (true) {
			while (j >= 0) {
				if (b[i][j] == c) {
					if (i > i0) {
						rot(i-1, j);
						--i;
					}
					while (j == 0 || j < j0) {
						rot(i, j);
						++j;
					}
					if (i == 0) {
						rot(i, j-1);
						++i;
					}
					while (j > j0 + 1) {
						rot(i-1, j-1);
						--j;
					}
					while (i < i0) {
						rot(i, j-1);
						++i;
					}
					return;
				}
				--j;
			}
			--i;
			j = j0 - 1;
		}
	};
	
	for (int i = 0; i < 8; ++i) {
		for (int j = 0; j < 8; ++j) {
			char c;
			cin >> c;
			b[i][j] = (c == 'M' ? 0 : 1);
		}
	}

	//print_board();
	//cout << "\n";
	
	for (int i = 6; i > 0; --i) {
		for (int j = 6; j >= 0; j -= 2) {
			//cout << "i = " << i << ", j = " << j << "\n";
			if (b[i][j] && b[i+1][j] && b[i][j+1] && b[i+1][j+1])
				get(0, i, j);
			if (!b[i][j] && !b[i+1][j] && !b[i][j+1] && !b[i+1][j+1])
				get(1, i, j);
			while (b[i+1][j] != (i + j) % 2 || b[i+1][j+1] == (i + j) % 2)
				rot(i, j);
		}
	}

	int i = 0;
	for (int j = 6; j >= 0; --j) {
		//cout << "i = " << i << ", j = " << j << "\n";
		if (b[i][j] && b[i+1][j] && b[i][j+1] && b[i+1][j+1])
			get2(0, i, j);
		if (!b[i][j] && !b[i+1][j] && !b[i][j+1] && !b[i+1][j+1])
			get2(1, i, j);
		while (b[i][j+1] != (i + j) % 2 || b[i+1][j+1] == (i + j) % 2)
			rot(i, j);
	}
	
	if (b[1][0] == 1) {
		rot(1, 0);
		rot(1, 0);
		rot(1, 0);
		rot(0, 0);
		rot(0, 0);
		rot(1, 0);
		rot(0, 0);
	}
	
	cout << moves.size() / 2 << "\n";
	for (int i = 0; i < moves.size() / 2; ++i)
		cout << moves[i*2 + 1] + 1 << " " << moves[i*2] + 1 << "\n";

	//print_board();
	//cout << "\n";
	
}

Test details

Test 1

Group: 1

Verdict: ACCEPTED

input
VMMVVMVV
MMVVMVVV
MMVVMMMM
MVVVMVVM
MVVVVMVM
...

correct output
100000

user output
57
5 7
5 7
5 7
1 7
...

Test 2

Group: 1

Verdict: ACCEPTED

input
MVMVVMMV
VVMMVVVV
VMMVMMVM
MVVVVMVM
MVMVMMVM
...

correct output
100000

user output
61
7 7
7 7
3 7
3 7
...

Test 3

Group: 1

Verdict: ACCEPTED

input
VMMMVMVV
MMMVMVMV
VMMVMVVM
VVVMVMMV
MVMVMVMV
...

correct output
100000

user output
74
2 7
2 7
1 7
1 7
...

Test 4

Group: 1

Verdict: ACCEPTED

input
VVVMVMVV
VMMVMVMM
MVVMMVMV
VMVMMVMM
MMVVMMVM
...

correct output
100000

user output
62
7 7
7 7
7 7
4 7
...

Test 5

Group: 1

Verdict: ACCEPTED

input
MVMVVMMM
VVMMVVMV
MVVMVVMM
VMVMVMMV
MMVMVVVM
...

correct output
100000

user output
74
6 7
6 7
7 7
7 7
...

Test 6

Group: 1

Verdict: ACCEPTED

input
VMMVMVVM
VVMMVVMM
MMMVMVVM
VMMVMMVM
MVMVMMMV
...

correct output
100000

user output
58
7 7
7 6
7 6
2 6
...

Test 7

Group: 1

Verdict: ACCEPTED

input
MVVVVMMM
MMMMMMMM
VVVVVMMV
MMVVMVVM
VMVVVVMV
...

correct output
100000

user output
79
7 7
7 7
7 7
5 7
...

Test 8

Group: 1

Verdict: ACCEPTED

input
VMMVMVMM
MMMVVMMM
MVVVVVVV
VVVVMMMV
MVVVMVVM
...

correct output
100000

user output
76
7 7
5 6
4 6
3 6
...

Test 9

Group: 1

Verdict: ACCEPTED

input
VVVVVMMM
MMVVVVVV
MVVVMMMM
VVMVVVVM
VMMVMVMM
...

correct output
100000

user output
96
7 7
7 7
5 7
5 7
...

Test 10

Group: 1

Verdict: ACCEPTED

input
VMMVMMMM
VVMVVVVV
VMMVMVMV
VMMVMVMM
VVVMMMMM
...

correct output
100000

user output
75
7 7
5 7
3 7
7 6
...

Test 11

Group: 2

Verdict: ACCEPTED

input
VMVMVVMM
MMVMVVMM
VMVVVMMV
VVVMVMVM
VVMMVVMM
...

correct output
25000

user output
72
7 7
3 7
3 7
1 7
...

Test 12

Group: 2

Verdict: ACCEPTED

input
MVMVVMVV
VMMVVMVM
VMVVVMMM
VMMMMVVM
MMVVVMMM
...

correct output
25000

user output
53
7 7
4 7
4 7
5 7
...

Test 13

Group: 2

Verdict: ACCEPTED

input
MVVMMVVV
MMVVMVMM
VVVMVMVV
VMVMMMMM
MVVMMVMV
...

correct output
25000

user output
59
7 7
5 7
5 7
5 7
...

Test 14

Group: 2

Verdict: ACCEPTED

input
VVMMMVMV
VMVVVMVV
VVMVVVMM
MVVMVMVM
MMVVMMMM
...

correct output
25000

user output
78
4 7
4 7
1 7
7 6
...

Test 15

Group: 2

Verdict: ACCEPTED

input
MVVVMVVV
MMMMVMMM
MVMMMVVM
MMVVVMVM
VMVVVMMV
...

correct output
25000

user output
64
5 7
5 7
6 7
7 7
...

Test 16

Group: 2

Verdict: ACCEPTED

input
VMMVMVVM
VMMVVVVV
MVMVMMVM
VMMVVVMV
VVMVMMVM
...

correct output
25000

user output
60
7 7
5 7
1 7
1 7
...

Test 17

Group: 2

Verdict: ACCEPTED

input
MVVMMVVM
MVVVMMMV
MVVMMVVM
VMMVMVMV
VMMVMMMM
...

correct output
25000

user output
62
5 7
3 7
3 7
1 7
...

Test 18

Group: 2

Verdict: ACCEPTED

input
MVMMVVMM
VVMMMMVV
VMVVVVVM
MVMMMVMV
VMVVVMVM
...

correct output
25000

user output
42
7 6
6 6
5 6
4 6
...

Test 19

Group: 2

Verdict: ACCEPTED

input
MVVVVVVV
VMMVMVVM
VMVMMMMV
MVMVMMMM
MMVVVMMM
...

correct output
25000

user output
70
7 7
7 7
7 7
5 7
...

Test 20

Group: 2

Verdict: ACCEPTED

input
MVVVMMMM
MMVMMVMV
MVVVVVMM
VVMMMVVM
VVVMVMVV
...

correct output
25000

user output
64
5 7
5 7
5 7
2 7
...

Test 21

Group: 3

Verdict: ACCEPTED

input
VMVVMVMM
MMMMVMMV
VVVMVVVV
MVMVMVVM
VMMVMMMM
...

correct output
5000

user output
36
7 7
7 7
5 7
5 7
...

Test 22

Group: 3

Verdict: ACCEPTED

input
VVVVVVMM
MMMVMMVV
VVVVVVMV
MMMVMVVV
MVVMMMMV
...

correct output
5000

user output
75
3 7
3 7
3 6
2 6
...

Test 23

Group: 3

Verdict: ACCEPTED

input
MMVMVMVV
MMVVMVVM
VMMVVMVM
MMMMMMVV
MVVVVMVM
...

correct output
5000

user output
76
7 7
7 7
5 7
5 7
...

Test 24

Group: 3

Verdict: ACCEPTED

input
MVMVVMVM
VVMVVMVM
MMMMVMVV
MVVMMVVV
MMMMMVVV
...

correct output
5000

user output
93
7 7
7 7
7 7
5 7
...

Test 25

Group: 3

Verdict: ACCEPTED

input
MVVVMVVM
MMMMVVMV
VMMVMMVV
VVMVMVMV
MVMMMVMM
...

correct output
5000

user output
53
7 7
7 7
3 7
7 6
...

Test 26

Group: 3

Verdict: ACCEPTED

input
VMVMVVVM
MMMVVVMM
MMVVVVVM
VVVVMMVV
VMMVVMMV
...

correct output
5000

user output
71
7 7
7 7
7 7
5 7
...

Test 27

Group: 3

Verdict: ACCEPTED

input
MMVMMVVM
MVVVMVMV
MVVVMVVM
VMVMMMVV
VMMVVVVV
...

correct output
5000

user output
78
5 7
5 7
5 7
3 7
...

Test 28

Group: 3

Verdict: ACCEPTED

input
MVMMVMMV
VMVMMMVV
MMMMVVMV
VVVVMMMM
MMMVMMVV
...

correct output
5000

user output
71
7 7
7 7
5 6
4 6
...

Test 29

Group: 3

Verdict: ACCEPTED

input
VVVVMVMV
MMMVVMVM
MVVVMVMV
VVVMVVMM
VMMMMMVV
...

correct output
5000

user output
55
7 7
7 7
5 7
5 7
...

Test 30

Group: 3

Verdict: ACCEPTED

input
MVVVMVVV
MMVVMMMM
MVVVVVVV
MVMVMMMV
VMMMVMMM
...

correct output
5000

user output
77
7 7
7 7
5 7
5 7
...

Test 31

Group: 4

Verdict: ACCEPTED

input
MVMMVMMV
VVVMMVVV
VMMVVMMV
VVMMMVVM
VVVMMMVV
...

correct output
250

user output
58
6 7
6 7
7 7
7 7
...

Test 32

Group: 4

Verdict: ACCEPTED

input
VVMMVVVM
VMVVMMVV
VMMMMMMV
VVMVMVVV
VMMVMVMM
...

correct output
250

user output
64
3 7
3 7
1 7
1 7
...

Test 33

Group: 4

Verdict: ACCEPTED

input
MMVVMVMV
VVVMVMMM
VVVVMVMM
MVVMVVMV
VMMVMVVM
...

correct output
250

user output
66
7 7
7 7
7 7
6 6
...

Test 34

Group: 4

Verdict: ACCEPTED

input
VMVMVVMV
MVVMMMMM
MMVVMMMM
VMVMVVVM
VMMMVVVM
...

correct output
250

user output
65
5 7
3 7
3 7
3 7
...

Test 35

Group: 4

Verdict: ACCEPTED

input
VMVMVMMM
VMMVVVMM
MMVMVMMM
MVMMVVVV
VMMVMMMV
...

correct output
250

user output
86
5 7
3 7
7 6
7 6
...

Test 36

Group: 4

Verdict: ACCEPTED

input
MVMVMVMM
MVMVMMMV
MMVVVVMM
MVMVVVVV
VMMMVVMM
...

correct output
250

user output
62
7 6
7 6
7 6
5 6
...

Test 37

Group: 4

Verdict: ACCEPTED

input
VMMMMVMM
VVMMMVMV
VMVVVVVV
MVMMMVVM
VMVMMVVM
...

correct output
250

user output
77
5 7
5 7
3 7
3 7
...

Test 38

Group: 4

Verdict: ACCEPTED

input
VMMVMVMV
VVMVMVMM
MMMVMVMM
MVVVVMMM
MMVVVMVV
...

correct output
250

user output
56
5 7
5 7
3 7
3 7
...

Test 39

Group: 4

Verdict: ACCEPTED

input
MMMMMVMV
MVVMMMMV
VMVVVVMM
VMVVVMMV
MVMMMVMM
...

correct output
250

user output
65
3 7
3 7
1 7
1 7
...

Test 40

Group: 4

Verdict: ACCEPTED

input
VMMMMMMV
VMMVVVVV
MVMMVMMV
MVVVVMMV
MVVVVMMM
...

correct output
250

user output
64
5 7
5 7
5 7
3 7
...