Submission details
Task:Forest density
Sender:klaava
Submission time:2025-09-22 17:44:35 +0300
Language:C++ (C++17)
Status:READY
Result:ACCEPTED
Test results
testverdicttime
#1ACCEPTED0.00 sdetails
#2ACCEPTED0.59 sdetails
#3ACCEPTED0.61 sdetails

Code

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

template <class T>
void print_v(vector<T> &v) { cout << "{"; for (auto x : v) cout << x << ","; cout << "\b}"; }


int main()
{
    int n;
    int q;
    cin >> n >> q;

    int sum[n][n];

    for (int y = 0; y < n; y++) {
        int line_sum = 0;
        for (int x = 0; x < n; x++) {
            char i;
            cin >> i;

            if (i == '*')
            {
                line_sum++;
            }
           sum[y][x] = line_sum;
        } 
    }

    int queries[q];
    for (int i = 0; i < q; i++) {
        int y1, x1, y2, x2;
        cin >> y1 >> x1>>y2>>x2;
        y1--;y2--;x1--;x2--;
        queries[i] = 0; 
        
        int tc = 0;
        for (int y = y1; y <= y2; y++)
        {
            if (x1 == 0)
            {
                tc += sum[y][x2];
            }
            else
            {
                tc += sum[y][x2] - sum[y][x1 - 1];
            }
        } 
        queries[i] = tc;
    }   
    for (int i = 0; i < q; i++)
        cout << queries[i] << "\n";
   
    return 0;
}

Test details

Test 1

Verdict: ACCEPTED

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

correct output
10
14
5
7
8
...

user output
10
14
5
7
8
...
Truncated

Test 2

Verdict: ACCEPTED

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

correct output
41079
2824
15631
1548
8483
...

user output
41079
2824
15631
1548
8483
...
Truncated

Test 3

Verdict: ACCEPTED

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

correct output
1000000
1000000
1000000
1000000
1000000
...

user output
1000000
1000000
1000000
1000000
1000000
...
Truncated