CSES - KILO 2018 5/5 - Results
Submission details
Task:Labyrinth
Sender:arman_ferdous
Submission time:2018-10-04 18:02:02 +0300
Language:C++
Status:READY
Result:ACCEPTED
Test results
testverdicttime
#1ACCEPTED0.02 sdetails
#2ACCEPTED0.01 sdetails
#3ACCEPTED0.02 sdetails
#4ACCEPTED0.03 sdetails
#5ACCEPTED0.03 sdetails
#6ACCEPTED0.02 sdetails
#7ACCEPTED0.01 sdetails
#8ACCEPTED0.01 sdetails
#9ACCEPTED0.02 sdetails
#10ACCEPTED0.01 sdetails
#11ACCEPTED0.01 sdetails
#12ACCEPTED0.01 sdetails
#13ACCEPTED0.03 sdetails
#14ACCEPTED0.03 sdetails
#15ACCEPTED0.02 sdetails
#16ACCEPTED0.02 sdetails
#17ACCEPTED0.01 sdetails
#18ACCEPTED0.01 sdetails
#19ACCEPTED0.02 sdetails
#20ACCEPTED0.02 sdetails

Compiler report

input/code.cpp: In function 'int main()':
input/code.cpp:39: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:41: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;
				goto start;
			}
	start: 
	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: ACCEPTED

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

correct output
219

user output
219

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: ACCEPTED

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

correct output
24

user output
24

Test 5

Verdict: ACCEPTED

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

correct output
16

user output
16

Test 6

Verdict: ACCEPTED

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

correct output
2

user output
2

Test 7

Verdict: ACCEPTED

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

correct output
2

user output
2

Test 8

Verdict: ACCEPTED

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

correct output
2

user output
2

Test 9

Verdict: ACCEPTED

input
3 2 2
?#
##
#?

correct output
3

user output
3

Test 10

Verdict: ACCEPTED

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

correct output
0

user output
0

Test 11

Verdict: ACCEPTED

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

correct output
4

user output
4

Test 12

Verdict: ACCEPTED

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

correct output
6

user output
6

Test 13

Verdict: ACCEPTED

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

correct output
60

user output
60

Test 14

Verdict: ACCEPTED

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

correct output
16

user output
16

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: ACCEPTED

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

correct output
144

user output
144

Test 18

Verdict: ACCEPTED

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

correct output
8

user output
8

Test 19

Verdict: ACCEPTED

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

correct output
128

user output
128

Test 20

Verdict: ACCEPTED

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

correct output
18

user output
18