Submission details
Task:Forest density
Sender:aalto26dm_041
Submission time:2026-09-21 17:19:16 +0300
Language:Python3 (PyPy3)
Status:READY
Result:ACCEPTED
Test results
testverdicttime
#1ACCEPTED0.04 sdetails
#2ACCEPTED0.29 sdetails
#3ACCEPTED0.25 sdetails

Code

import sys

def main():
    input_data = sys.stdin.read().split()
    if not input_data:
        return

    n = int(input_data[0])
    q = int(input_data[1])

    pref = [[0] * (n + 1) for _ in range(n + 1)]

    for i in range(n):
        row = input_data[2 + i]
        for j in range(n):
            val = 1 if row[j] == '*' else 0
            pref[i + 1][j + 1] = val + pref[i][j + 1] + pref[i + 1][j] - pref[i][j]

    idx = 2 + n
    out = []

    for _ in range(q):
        y1 = int(input_data[idx])
        x1 = int(input_data[idx + 1])
        y2 = int(input_data[idx + 2])
        x2 = int(input_data[idx + 3])
        
        res = pref[y2][x2] - pref[y1 - 1][x2] - pref[y2][x1 - 1] + pref[y1 - 1][x1 - 1]
        out.append(str(res))
        idx += 4

    sys.stdout.write('\n'.join(out) + '\n')

if __name__ == '__main__':
    main()

Test details

Test 1

Verdict: ACCEPTED

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

correct output
10
14
5
7
8
...

user output
10
14
5
7
8
...

Test 2

Verdict: ACCEPTED

input
1000 200000
**.**.****..**.***..**.***.**....

correct output
41079
2824
15631
1548
8483
...

user output
41079
2824
15631
1548
8483
...

Test 3

Verdict: ACCEPTED

input
1000 200000
******************************...

correct output
1000000
1000000
1000000
1000000
1000000
...

user output
1000000
1000000
1000000
1000000
1000000
...