CSES - Datatähti Open 2019 - Results
Submission details
Task:Sum
Sender:tutis
Submission time:2019-01-19 20:39:18 +0200
Language:C++
Status:READY
Result:0
Feedback
groupverdictscore
#10
Test results
testverdicttime
#1--details
#20.02 sdetails
#3--details
#4--details
#5--details
#6--details
#7--details
#8--details
#9--details
#10--details
#11--details
#12--details
#13--details
#14--details
#15--details
#16--details
#17--details
#18--details
#19--details
#20--details
#21--details
#22--details
#23--details
#24--details
#25--details
#26--details
#27--details
#28--details

Compiler report

input/code.cpp: In function 'bool tinka(int, int, std::__cxx11::string*, int)':
input/code.cpp:17:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   if (A.size() == n * m && x == 0 && y == 0)
       ~~~~~~~~~^~~~~~~~
input/code.cpp: In function 'int main()':
input/code.cpp:43:10: warning: unused variable 'pradzia' [-Wunused-variable]
  clock_t pradzia = clock();
          ^~~~~~~

Code

/*input
4 4
*/
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;
int dx[4] = {0, 1, 0, -1};
int dy[4] = {1, 0, -1, 0};
bool tinka(int n, int m, string a[], int maxi = 100)
{
	int x = 0, y = 0;
	int t = 0;
	set<pair<int, int>>A = {{x, y}};
	while (maxi > 0)
	{
		if (A.size() == n * m && x == 0 && y == 0)
			return true;
		if (x + dx[t] < 0 || y + dy[t] < 0 || x + dx[t] >= n || y + dy[t] >= m)
			return false;
		bool same = (a[x][y] == a[x + dx[t]][y + dy[t]]);
		if (a[x][y] == 'R')
		{
			a[x][y] = 'G';
		}
		else if (a[x][y] == 'G')
		{
			a[x][y] = 'B';
		}
		else
			a[x][y] = 'R';
		x += dx[t];
		y += dy[t];
		if (!same)
			t = (t + 1) % 4;
		A.insert({x, y});
		maxi--;
	}
	return false;
}
int main()
{
	clock_t pradzia = clock();
	srand(2019);
	ios_base::sync_with_stdio(false);
	int n, m;
	cin >> n >> m;
	{
		if (n == 2)
		{
			for (int t = 0; t < m; t++)
			{
				if (t < m - 1)
					cout << "R";
				else
					cout << "B\n";
			}
			for (int t = 0; t < m; t++)
			{
				if (t < m - 1)
				{
					if (t == 0)
						cout << "B";
					else
						cout << "G";
				}
				else
					cout << "G\n";
			}
			return 0;
		}
		if (m == 2)
		{
			cout << "RB\n";
			for (int i = 0; i < n - 2; i++)
				cout << "RB\n";
			cout << "RG\n";
			return 0;
		}
	}
	string x[2] = {
		"RRRB",
		"BGGG"
	};
	ll W = 0;
	while (W <= pow(3, (n * m)))
	{
		if (W % 2000 == 0)
		{
			cout << W / pow(3, (n * m)) << endl;
		}
		W++;
		string a[n];
		ll WW = W;
		for (int i = 0; i < n; i++)
		{
			a[i] = string(m, 'R');
			for (int t = 0; t < m; t++)
			{
				if (W % 3 == 0)
				{
					a[i][t] = 'R';
				}
				else if (W % 3 == 1)
				{
					a[i][t] = 'G';
				}
				else
					a[i][t] = 'B';
				W /= 3;
			}
		}
		W = WW;
		string b[n];
		for (int i = 0; i < n; i++)
		{
			b[i] = a[i];
		}
		if (tinka(n, m, a))
		{
			for (int i = 0; i < n; i++)
				cout << b[i] << "\n";
			return 0;
		}
	}
	cout << "IMPOSSIBLE\n";
}

Test details

Test 1

Verdict:

input
1

correct output
0

user output
(empty)

Test 2

Verdict:

input
2

correct output
0

user output
RRRRRRRRRRRRRRRRRRRRRRRRRRRRRR...

Test 3

Verdict:

input
3

correct output
0

user output
(empty)

Test 4

Verdict:

input
4

correct output
0

user output
(empty)

Test 5

Verdict:

input
5

correct output
0

user output
(empty)

Test 6

Verdict:

input
6

correct output
1

user output
(empty)

Test 7

Verdict:

input
7

correct output
1

user output
(empty)

Test 8

Verdict:

input
8

correct output
2

user output
(empty)

Test 9

Verdict:

input
9

correct output
3

user output
(empty)

Test 10

Verdict:

input
10

correct output
4

user output
(empty)

Test 11

Verdict:

input
20

correct output
24

user output
(empty)

Test 12

Verdict:

input
30

correct output
61

user output
(empty)

Test 13

Verdict:

input
40

correct output
114

user output
(empty)

Test 14

Verdict:

input
50

correct output
184

user output
(empty)

Test 15

Verdict:

input
60

correct output
271

user output
(empty)

Test 16

Verdict:

input
70

correct output
374

user output
(empty)

Test 17

Verdict:

input
80

correct output
494

user output
(empty)

Test 18

Verdict:

input
90

correct output
631

user output
(empty)

Test 19

Verdict:

input
100

correct output
784

user output
(empty)

Test 20

Verdict:

input
200

correct output
3234

user output
(empty)

Test 21

Verdict:

input
300

correct output
7351

user output
(empty)

Test 22

Verdict:

input
400

correct output
13134

user output
(empty)

Test 23

Verdict:

input
500

correct output
20584

user output
(empty)

Test 24

Verdict:

input
600

correct output
29701

user output
(empty)

Test 25

Verdict:

input
700

correct output
40484

user output
(empty)

Test 26

Verdict:

input
800

correct output
52934

user output
(empty)

Test 27

Verdict:

input
900

correct output
67051

user output
(empty)

Test 28

Verdict:

input
1000

correct output
82834

user output
(empty)