| Task: | Forest density |
| Sender: | ileska |
| Submission time: | 2025-09-22 17:49:00 +0300 |
| Language: | C++ (C++20) |
| Status: | READY |
| Result: | WRONG ANSWER |
| test | verdict | time | |
|---|---|---|---|
| #1 | WRONG ANSWER | 0.00 s | details |
| #2 | WRONG ANSWER | 0.55 s | details |
| #3 | WRONG ANSWER | 0.54 s | details |
Compiler report
input/code.cpp: In function 'int main()':
input/code.cpp:37:23: warning: comparison of integer expressions of different signedness: 'int' and 'unsigned int' [-Wsign-compare]
37 | for (int yy = 0; yy < size; yy++) {
| ~~~^~~~~~
input/code.cpp:39:25: warning: comparison of integer expressions of different signedness: 'int' and 'unsigned int' [-Wsign-compare]
39 | for (int xx = 0; xx < size; xx++) {
| ~~~^~~~~~Code
#include <iostream>
// #include <string>
#include <vector>
// def getSubSum(startY,startX,endY,endX):
// # print(sumMap[endY][endX],endX,endY)
// # print(sumMap[startY][startX],startX,startY)
// ret = sumMap[endY][endX]
// if startY != 0:
// ret -= sumMap[startY-1][endX]
// if startX != 0:
// ret -= sumMap[endY][startX-1]
// if startY != 0 and startX != 0:
// ret += sumMap[startY-1][startX-1]
// return ret
int getSubSum(int startX, int startY, int endX, int endY,
std::vector<int> &sumMap, int size) {
// std::cout << startX << std::endl;
int ret = sumMap[startY * size + startX];
if (startY != 0)
ret -= sumMap[(startY - 1) * size + endX];
if (startX != 0)
ret -= sumMap[(startY)*size + endX - 1];
if (startX != 0 && startY != 0)
ret += sumMap[(startY - 1) * size + endX - 1];
return ret;
}
int main() {
unsigned int size;
int qCount;
std::cin >> size;
std::cin >> qCount;
// std::cout << size << " " << qCount << std::endl;
std::vector<int> forest(size * size, 0);
std::vector<int> sumMap(size * size, 0);
std::cin.get();
for (int yy = 0; yy < size; yy++) {
char ret;
for (int xx = 0; xx < size; xx++) {
std::cin.get(ret);
// std::cout << (int)ret << " ";
forest[yy * size + xx] = ret == '*' ? 1 : 0;
if (yy == 0 && xx == 0) {
sumMap[yy * size + xx] = ret == '*' ? 1 : 0;
} else if (yy == 0) {
sumMap[yy * size + xx] = sumMap[xx - 1] + forest[xx];
} else if (xx == 0) {
sumMap[yy * size + xx] = sumMap[(yy - 1) * size] + forest[yy * size];
} else {
sumMap[yy * size + xx] =
sumMap[(yy - 1) * size + xx] + sumMap[yy * size + xx - 1] -
sumMap[(yy - 1) * size + xx - 1] + forest[yy * size + xx];
}
}
std::cin.get();
// std::cout << std::endl;
}
// for (int yy = 0; yy < size; yy++) {
// for (int xx = 0; xx < size; xx++) {
// std::cout << sumMap[yy * size + xx];
// }
// std::cout << std::endl;
// }
for (int qq = 0; qq < qCount; qq++) {
int x0, y0, x1, y1;
std::cin >> x0;
std::cin >> y0;
std::cin >> x1;
std::cin >> y1;
// std::cout << x0 << std::endl;
std::cout << getSubSum(x0 - 1, y0 - 1, x1 - 1, y1 - 1, sumMap, size)
<< std::endl;
}
}Test details
Test 1
Verdict: WRONG ANSWER
| input |
|---|
| 10 100 **.*.*.**. *.**.*..*. .*****.**. **....***. ... |
| correct output |
|---|
| 10 14 5 7 8 ... |
| user output |
|---|
| -2 -2 1 -1 0 ... Truncated |
Test 2
Verdict: WRONG ANSWER
| input |
|---|
| 1000 200000 **.**.****..**.***..**.***.**.... |
| correct output |
|---|
| 41079 2824 15631 1548 8483 ... |
| user output |
|---|
| -217440 -86841 -120234 -26750 -15000 ... Truncated |
Test 3
Verdict: WRONG ANSWER
| input |
|---|
| 1000 200000 ******************************... |
| correct output |
|---|
| 1000000 1000000 1000000 1000000 1000000 ... |
| user output |
|---|
| 1 1 1 1 1 ... Truncated |
