CSES - Aalto Competitive Programming 2024 - wk4 - Mon - Results
Submission details
Task:Forest density
Sender:aarol
Submission time:2024-09-23 17:20:15 +0300
Language:C++ (C++11)
Status:READY
Result:
Test results
testverdicttime
#10.00 sdetails
#2--details
#3--details

Code

#include <bits/stdc++.h>

using namespace std;

int n;

int tree_min(vector<int> &tree, int a, int b) {
  a += n;
  b += n;
  int m = 0;

  while (a <= b) {
    if ((a % 2) == 1) {
      m ^= tree[a];
      a++;
    }
    if ((b % 2) == 0) {
      m ^= tree[b];
      b--;
    }
    a /= 2;
    b /= 2;
  }
  return m;
}

void update(vector<int> &tree, int i, int v) {
  i += n;
  tree[i] = v;
  int newMin;
  while (i > 1) {
    i /= 2;
    newMin = tree[2 * i] ^ tree[2 * i + 1];
    if (tree[i] != newMin) {
      tree[i] = newMin;
    } else
      return;
  }
}

int main() {
  // ios::sync_with_stdio(false);
  // cin.tie(0);
  int q;
  cin >> n >> q;

  auto values = vector<string>(n, "");

  auto sumarr = vector<vector<int>>(n, vector<int>(n));

  for (int i = 0; i < n; i++) {
    cin >> values[i];
  }

  for (int i = 0; i < n; i++) {
    for (int y = 0; y < n; y++) {
      int c = 0;

      for (int x = 0; x <= i; x++) {
        for (int yy = 0; yy <= y; yy++) {
          if (values[x][yy] == '*') c++;
        }
      }
      sumarr[i][y] = c;
    }
  }

  for (int i = 0; i < n; i++) {
    for (int y = 0; y < n; y++) {
      cout << sumarr[i][y] << ' ';
    }
    cout << endl;
  }

  for (int i = 0; i < n; i++) {
    for (int y = 0; y < n; y++) {
      if (values[i][y] == '*') {
        cout << '*';
      }
    }
    cout << endl;
  }

  for (int i = 0; i < q; i++) {
    int y1, x1, y2, x2;
    cin >> y1 >> x1 >> y2 >> x2;
    y1--;
    x1--;
    y2--;
    x2--;
    int A = sumarr[y2][x2];
    if (x1 > 0) A -= sumarr[y2][x1 - 1];
    if (y1 > 0) A -= sumarr[y1 - 1][x2];
    if (y1 > 0 && x1 > 0) A -= sumarr[y1 - 1][x1 - 1];

    cout << A << endl;
  }

  return 0;
}

Test details

Test 1

Verdict:

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

correct output
10
14
5
7
8
...

user output
1 2 2 3 3 4 4 5 6 6 
2 3 4 6 6 8 8 9 11 11 
2 4 6 9 10 13 13 15 18 18 
3 6 8 11 12 15 16 1

...
Truncated

Test 2

Verdict:

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

correct output
41079
2824
15631
1548
8483
...

user output
(empty)

Test 3

Verdict:

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

correct output
1000000
1000000
1000000
1000000
1000000
...

user output
(empty)