CSES - KILO 2018 5/5 - Results
Submission details
Task:Labyrinth
Sender:arman_ferdous
Submission time:2018-10-04 17:52:06 +0300
Language:C++
Status:READY
Result:
Test results
testverdicttime
#10.01 sdetails
#2ACCEPTED0.01 sdetails
#3ACCEPTED0.02 sdetails
#40.02 sdetails
#50.02 sdetails
#6ACCEPTED0.02 sdetails
#70.02 sdetails
#8ACCEPTED0.03 sdetails
#90.01 sdetails
#10ACCEPTED0.01 sdetails
#110.02 sdetails
#120.02 sdetails
#130.03 sdetails
#140.02 sdetails
#15ACCEPTED0.01 sdetails
#16ACCEPTED0.03 sdetails
#170.02 sdetails
#180.01 sdetails
#19ACCEPTED0.02 sdetails
#200.03 sdetails

Compiler report

input/code.cpp: In function 'int main()':
input/code.cpp:38:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d %d %d", &n, &m, &k);
  ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
input/code.cpp:40:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf(" %s", mat[i]);
   ~~~~~^~~~~~~~~~~~~~~

Code

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

int n, m, k;
char mat[12][12];
char g[12][12];

int dx[] = {1,0,-1,0};
int dy[] = {0,1,0,-1};
int vis[12][12];
bool ok() {
	memset(vis,0,sizeof vis);
	queue< pair<int,int> > q;
	for(int i = 0; i < n; i++) 
		for(int j = 0; j < m; j++) 
			if(g[i][j] == '.') {
				q.push({i,j});
				vis[i][j] = 1;
				break;
			}
	while(!q.empty()) {
		auto tmp = q.front(); q.pop();
		for(int i = 0; i < 4; i++) {
			int tx = tmp.first + dx[i], ty = tmp.second + dy[i];
			if(min(tx,ty) < 0 || tx >= n || ty >= m) continue;
			if(g[tx][ty] == '#' || vis[tx][ty]) continue;
			vis[tx][ty] = 1;
			q.push({tx,ty});
		}
	}
	for(int i = 0; i < n; i++)
		for(int j = 0; j < m; j++)
			if(!vis[i][j] && g[i][j] == '.') return false;
	return true;
}

int main() {
	scanf("%d %d %d", &n, &m, &k);
	for(int i = 0; i < n; i++) 
		scanf(" %s", mat[i]);
	long long ans = 0;
	for(int mask = 0; mask < (1<<k); mask++) {
		int ptr = 0;
		for(int i = 0; i < n; i++) 
			for(int j = 0; j < m; j++) {
				g[i][j] = mat[i][j];
				if(g[i][j] == '?') {
					g[i][j] = ((mask&(1<<ptr)) ? '#' : '.');
					ptr++;
				}
			}
		if(ok()) ans++;
	}
	printf("%lld\n", ans);
}

Test details

Test 1

Verdict:

input
3 3 9
???
???
???

correct output
219

user output
427

Test 2

Verdict: ACCEPTED

input
8 2 2
.?
.#
..
..
...

correct output
4

user output
4

Test 3

Verdict: ACCEPTED

input
2 2 2
??
##

correct output
4

user output
4

Test 4

Verdict:

input
7 2 6
#?
#?
?.
..
...

correct output
24

user output
64

Test 5

Verdict:

input
5 6 8
????#.
#.?#..
..?.#?
.#....
...

correct output
16

user output
56

Test 6

Verdict: ACCEPTED

input
4 7 1
###.#..
?##....
....#.#
.##....

correct output
2

user output
2

Test 7

Verdict:

input
2 6 4
?#?##?
###?.#

correct output
2

user output
8

Test 8

Verdict: ACCEPTED

input
3 4 1
#.#.
....
?..#

correct output
2

user output
2

Test 9

Verdict:

input
3 2 2
?#
##
#?

correct output
3

user output
4

Test 10

Verdict: ACCEPTED

input
2 6 3
.###?#
??.#.#

correct output
0

user output
0

Test 11

Verdict:

input
3 7 5
.#?#..#
??....#
?###.#?

correct output
4

user output
14

Test 12

Verdict:

input
5 2 3
#?
..
?.
.?
...

correct output
6

user output
8

Test 13

Verdict:

input
10 10 10
#??...?.##
##.##?##.#
##....#...
.#.#.#....
...

correct output
60

user output
196

Test 14

Verdict:

input
10 10 10
##....####
####.##.#.
.....?.??.
..####..#?
...

correct output
16

user output
64

Test 15

Verdict: ACCEPTED

input
10 10 10
###.###.#.
#.##..#..#
.##.......
#.##?#...?
...

correct output
0

user output
0

Test 16

Verdict: ACCEPTED

input
10 10 10
..###.##..
...?#.###.
...#....#.
.##.?..#.?
...

correct output
352

user output
352

Test 17

Verdict:

input
10 10 10
#.......??
..#..##.##
...###..##
#?.??..#.#
...

correct output
144

user output
768

Test 18

Verdict:

input
10 10 10
??#....##.
####..?#?.
####....?#
.##?...#..
...

correct output
8

user output
128

Test 19

Verdict: ACCEPTED

input
10 10 10
...##..#..
#.##?...?.
..###?.##.
#.#####...
...

correct output
128

user output
128

Test 20

Verdict:

input
10 10 10
.?#.###..#
??...#....
#.#.##.#.#
#?.##.#.??
...

correct output
18

user output
144