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...
Truncated

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)