CSES - Datatähti 2016 alku - Results
Submission details
Task:Tontti
Sender:Nameci_2718
Submission time:2015-10-03 18:46:57
Language:Java
Status:READY
Result:14
Feedback
groupverdictscore
#1ACCEPTED14
#20
#30
Test results
testverdicttimegroup
#1ACCEPTED0.19 s1details
#2ACCEPTED0.18 s1details
#3ACCEPTED0.18 s1details
#4ACCEPTED0.18 s1details
#5ACCEPTED0.20 s1details
#6--2details
#7--2details
#8--2details
#9--2details
#10--2details
#11--3details
#12--3details
#13--3details
#14--3details
#15--3details

Code

import java.util.ArrayList;
import java.util.TreeMap;


public class Main {

	public static void main(String[] args) {
		IO io = new IO();
		
		int n = io.nextInt();
		int m = io.nextInt();
		int x = io.nextInt();
		
		ArrayList<Integer> puut = new ArrayList<>();
		
		for (int i = 0; i < n; i++) {
			String rivi = io.next();
			for (int j = 0; j < m; j++) {
				int ind = j + i * m;
				if(rivi.charAt(j) == '*') puut.add(ind);
			}
		}
		
		TreeMap<Integer, TreeMap<Integer, Integer>> neliot = new TreeMap<>();
		for (int i = 0; i < n*m; i++) {
			neliot.put(i, new TreeMap<>());
		}
		
		int laskuri = 0;
		
		for (int i = 1; i <= Math.min(n, m); i++) {
			if(x > i*i) continue;
			for (int p : puut) {
				int h = p/m;
				int w = p%m;
				
				for (int j = h; j >= Math.max(0, h-i+1); j--) {
					for (int j2 = w; j2 >= Math.max(0, w-i+1); j2--) {
						int ind = j2 + j * m;
						if(j2 + i - 1 >= m || j + i - 1 >= n) continue; 
						if(!neliot.get(ind).containsKey(i)) neliot.get(ind).put(i, 0);
						int uusi = neliot.get(ind).get(i) + 1;
						neliot.get(ind).put(i, uusi);
					}
				}
			}
		}
		
		for (int key : neliot.keySet()) {
			for (int key2 : neliot.get(key).keySet()) {
				if(x == neliot.get(key).get(key2)) laskuri++;
			}
		}
		
		io.println(laskuri);
		
		io.close();
	}

}

Test details

Test 1

Group: 1

Verdict: ACCEPTED

input
10 10 1
......*...
.......*..
*..*....*.
*....*....
...

correct output
94

user output
94

Test 2

Group: 1

Verdict: ACCEPTED

input
10 10 5
**********
**********
**********
**********
...

correct output
0

user output
0

Test 3

Group: 1

Verdict: ACCEPTED

input
10 10 10
**...*...*
*..*.**.*.
...**.*..*
*...**.*..
...

correct output
4

user output
4

Test 4

Group: 1

Verdict: ACCEPTED

input
10 10 5
****......
*.*.**..**
....*.*..*
...*.***..
...

correct output
16

user output
16

Test 5

Group: 1

Verdict: ACCEPTED

input
10 10 2
**.***..*.
...*.*....
.***.*...*
***.***..*
...

correct output
30

user output
30

Test 6

Group: 2

Verdict:

input
500 500 1
.................................

correct output
9552040

user output
(empty)

Test 7

Group: 2

Verdict:

input
500 500 5
.................................

correct output
1536063

user output
(empty)

Test 8

Group: 2

Verdict:

input
500 500 25000
**...*...**..*.*..*.**.*..*.*....

correct output
288

user output
(empty)

Test 9

Group: 2

Verdict:

input
500 500 12500
**.**.*..*...*.**...*.***........

correct output
786

user output
(empty)

Test 10

Group: 2

Verdict:

input
500 500 5000
.*.*.**..*.*.**.**..*..**...*....

correct output
1763

user output
(empty)

Test 11

Group: 3

Verdict:

input
2000 2000 1
.................................

correct output
489611392

user output
(empty)

Test 12

Group: 3

Verdict:

input
2000 2000 5
.................................

correct output
120725884

user output
(empty)

Test 13

Group: 3

Verdict:

input
2000 2000 400000
..*..**.**.**.*.***...**.*..**...

correct output
1849

user output
(empty)

Test 14

Group: 3

Verdict:

input
2000 2000 200000
***.*....*.*..*....**..*..*.*....

correct output
2665

user output
(empty)

Test 15

Group: 3

Verdict:

input
2000 2000 80000
**.**...*.***.**....**.*....*....

correct output
5587

user output
(empty)