CSES - Datatähti 2019 alku - Results
Submission details
Task:Ruudukko
Sender:N00B.exe
Submission time:2018-10-13 21:18:11 +0300
Language:C++
Status:READY
Result:0
Feedback
groupverdictscore
#10
#20
#30
Test results
testverdicttimegroup
#1ACCEPTED0.02 s1details
#2ACCEPTED0.01 s1details
#3ACCEPTED0.01 s1details
#4ACCEPTED0.02 s1details
#50.02 s1details
#60.01 s1details
#70.01 s1details
#80.03 s1details
#9ACCEPTED0.03 s1details
#10--1details
#110.02 s2details
#120.02 s2details
#130.05 s2details
#140.26 s2details
#150.77 s2details
#16--2details
#17--2details
#18--2details
#19--2details
#20--2details
#210.18 s3details
#220.04 s3details
#230.04 s3details
#240.03 s3details
#25ACCEPTED0.04 s3details
#260.17 s3details
#270.04 s3details
#280.03 s3details
#290.04 s3details
#30ACCEPTED0.04 s3details

Compiler report

input/code.cpp: In function 'int main()':
input/code.cpp:7:42: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
 #define FOR(num, n) for(int num = 0; num < n; num++)
input/code.cpp:203:6:
  FOR(i, factors.size())
      ~~~~~~~~~~~~~~~~~                    
input/code.cpp:203:2: note: in expansion of macro 'FOR'
  FOR(i, factors.size())
  ^~~
input/code.cpp:31:6: warning: unused variable 'bitAmount' [-Wunused-variable]
  int bitAmount = n * n;
      ^~~~~~~~~
input/code.cpp:11:24: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
 #define SCNI(num) scanf("%d", &num)
                   ~~~~~^~~~~~~~~~~~
input/code.cpp:29:2: note: in expansion of macro 'SCNI'
  SCNI(n);
  ^~~~
input/code.cpp:12:23: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
 #define SCNC(ch) scanf("%c", &ch)...

Code

#include <iostream>
#include <bitset>
#include <unordered_set>
#include <vector>
#include <stdio.h>
#define PAUSE getchar();getchar()
#define FOR(num, n) for(int num = 0; num < n; num++)
#define PRTI(num) printf("%d", num)
#define PRT(s) printf("%s", s)
#define LBRK printf("\n");
#define SCNI(num) scanf("%d", &num)
#define SCNC(ch) scanf("%c", &ch)
#define USETI unordered_set<int>
#define NSRT(container, val) container.insert(val)
#define CNT(container, val) container.count(val)
#define ERS(container, val) container.erase(val)
#define VADD(container, val) container.push_back(val)
#define VECTI vector<int>
#define PRINTSITUATION LBRK; FOR(i, n) { FOR(k, n) { int b = bits[i*n + k]; PRTI(b);} LBRK;} LBRK

using namespace std;

int main()
{
	ios_base::sync_with_stdio(0);
	cin.tie(0);

	int n;
	SCNI(n);

	int bitAmount = n * n;
	bitset<4000000> bits;

	USETI a, b, a2, b2;
	VECTI factors;

	FOR(i, n)
	{
		NSRT(a, i);
		NSRT(b, i);
		NSRT(a2, i);
		NSRT(b2, i);
	}

	char c;

	FOR(i, n)
	{
		FOR(k, n)
		{

			SCNC(c);
			
			if(c == '\n')
			{ SCNC(c); }

			if(c == 'A')
			{
				ERS(a, i);
				ERS(a2, k);
				bits[(i*n+k)] = 1;
			}

			else if (c == 'B')
			{
				ERS(b, i);
				ERS(b2, k);
				bits[(i*n + k)] = 1;
			}
		}
	}

	//LBRK;
	//PAUSE;

	int min = 2147483647;
	int index = -1;

	while(min > 1)
	{
		min = 2147483647;
		index = -1;
		FOR(i, n)
		{
			if (CNT(a, i) == 0)
			{ continue; }

			int p = 0;
			FOR(k, n)
			{
				if (CNT(a2, k) == 0)
				{ continue; }

				if (bits[(i*n + k)] != 1)
				{ p++; }
			}

			if (p < min)
			{ min = p; index = i; }

		}

		VADD(factors, min);

		FOR(k, n)
		{
			if (CNT(a2, k) == 0)
			{ continue; }

			if (bits[(index*n + k)] != 1)
			{
				ERS(a, index);
				ERS(a2, k);
				bits[(index*n + k)] = 1;
				break;
			}
		}

		/*
		LBRK;
		PRTI(min);
		LBRK;
		PRTI(index);

		LBRK;
		PRINTSITUATION;
		LBRK;

		PAUSE;
		PAUSE;
		*/
	}

	min = 2147483647;
	index = -1;

	while (min > 1)
	{
		min = 2147483647;
		index = -1;
		FOR(i, n)
		{
			if (CNT(b, i) == 0)
			{
				continue;
			}

			int p = 0;
			FOR(k, n)
			{
				if (CNT(b2, k) == 0)
				{
					continue;
				}

				if (bits[(i*n + k)] != 1)
				{
					p++;
				}
			}

			if (p < min)
			{
				min = p; index = i;
			}

		}

		VADD(factors, min);

		FOR(k, n)
		{
			if (CNT(b2, k) == 0)
			{
				continue;
			}

			if (bits[(index*n + k)] != 1)
			{
				ERS(b, index);
				ERS(b2, k);
				bits[(index*n + k)] = 1;
				break;
			}
		}

		/*
		LBRK;
		PRTI(min);
		LBRK;
		PRTI(index);

		LBRK;
		PRINTSITUATION;
		LBRK;

		PAUSE;
		PAUSE;
		*/
	}

	int ans = 1;
	FOR(i, factors.size())
	{ ans *= factors[i]; }
	
	PRTI(ans);

	//PAUSE;
	//PAUSE;

    return 0;
}

Test details

Test 1

Group: 1

Verdict: ACCEPTED

input
2
..
..

correct output
2

user output
2

Test 2

Group: 1

Verdict: ACCEPTED

input
2
..
A.

correct output
1

user output
1

Test 3

Group: 1

Verdict: ACCEPTED

input
2
B.
.A

correct output
0

user output
0

Test 4

Group: 1

Verdict: ACCEPTED

input
3
...
...
...

correct output
12

user output
12

Test 5

Group: 1

Verdict:

input
4
....
....
....
....

correct output
216

user output
144

Test 6

Group: 1

Verdict:

input
5
.....
.....
.....
.....
...

correct output
5280

user output
2880

Test 7

Group: 1

Verdict:

input
5
....A
.....
.....
.....
...

correct output
264

user output
288

Test 8

Group: 1

Verdict:

input
5
B....
.....
.....
.A.B.
...

correct output
22

user output
36

Test 9

Group: 1

Verdict: ACCEPTED

input
5
B.A..
....A
.....
A.B..
...

correct output
2

user output
2

Test 10

Group: 1

Verdict:

input
5
A.B..
BA...
.B.A.
...BA
...

correct output
1

user output
(empty)

Test 11

Group: 2

Verdict:

input
10
..........
..........
..........
..........
...

correct output
306442892

user output
-1736015872

Test 12

Group: 2

Verdict:

input
50
.................................

correct output
694861480

user output
0

Test 13

Group: 2

Verdict:

input
111
.................................

correct output
555319110

user output
0

Test 14

Group: 2

Verdict:

input
222
.................................

correct output
108372237

user output
0

Test 15

Group: 2

Verdict:

input
333
.................................

correct output
259107857

user output
0

Test 16

Group: 2

Verdict:

input
444
.................................

correct output
19906314

user output
(empty)

Test 17

Group: 2

Verdict:

input
497
.................................

correct output
224313667

user output
(empty)

Test 18

Group: 2

Verdict:

input
498
.................................

correct output
929574601

user output
(empty)

Test 19

Group: 2

Verdict:

input
499
.................................

correct output
600226043

user output
(empty)

Test 20

Group: 2

Verdict:

input
500
.................................

correct output
198353194

user output
(empty)

Test 21

Group: 3

Verdict:

input
499
.................................

correct output
840243733

user output
0

Test 22

Group: 3

Verdict:

input
499
........................A........

correct output
4146290

user output
0

Test 23

Group: 3

Verdict:

input
499
B.........A......................

correct output
173518884

user output
-381681664

Test 24

Group: 3

Verdict:

input
499
...A....B........................

correct output
20044800

user output
18144000

Test 25

Group: 3

Verdict: ACCEPTED

input
499
AB...............................

correct output
2

user output
2

Test 26

Group: 3

Verdict:

input
500
.................................

correct output
121064146

user output
0

Test 27

Group: 3

Verdict:

input
500
.................................

correct output
848435259

user output
0

Test 28

Group: 3

Verdict:

input
500
.....B........A..................

correct output
296240911

user output
871890944

Test 29

Group: 3

Verdict:

input
500
.A......B........................

correct output
2196

user output
1728

Test 30

Group: 3

Verdict: ACCEPTED

input
500
...AB............................

correct output
1

user output
1