| Task: | Monikulmio |
| Sender: | Lytsky |
| Submission time: | 2025-10-27 12:40:18 +0200 |
| Language: | C++ (C++11) |
| Status: | READY |
| Result: | 91 |
| group | verdict | score |
|---|---|---|
| #1 | ACCEPTED | 91 |
| test | verdict | time | score | |
|---|---|---|---|---|
| #1 | ACCEPTED | 0.00 s | 10 | details |
| #2 | ACCEPTED | 0.00 s | 10 | details |
| #3 | ACCEPTED | 0.00 s | 10 | details |
| #4 | ACCEPTED | 0.00 s | 10 | details |
| #5 | ACCEPTED | 0.00 s | 10 | details |
| #6 | ACCEPTED | 0.00 s | 10 | details |
| #7 | ACCEPTED | 0.00 s | 7 | details |
| #8 | ACCEPTED | 0.01 s | 10 | details |
| #9 | ACCEPTED | 0.00 s | 7 | details |
| #10 | ACCEPTED | 0.01 s | 7 | details |
Code
#include <bits/stdc++.h>
using namespace std;
int main() {
int n, m, p, y, x;
cin >> n >> m >> p;
vector<vector<int>> points;
for (int index = 0; index < n; index++) {
points.push_back({});
for (int jndex = 0; jndex < m; jndex++) {
points[index].push_back(0);
}
}
vector<pair<int, int>> lines;
vector<vector<pair<bool, int>>> crosses;
for (int index = 0; index < n; index++) {
crosses.push_back({});
for (int jndex = 0; jndex < m; jndex++) {
crosses[index].push_back({false, 0});
}
}
vector<string> grid;
for (int index = 0; index < p; index++) {
cin >> y >> x;
lines.push_back({y-1, x-1});
points[y-1][x-1] = true;
points[y-1][x-1] = 1;
}
for (int depth = 0; depth < n; depth++) {
grid.push_back("");
for (int width = 0; width < m; width++) {
if (points[depth][width] == 0) grid[depth] += ".";
else grid[depth] += "*";
}
}
for (int point = 0; point < p; point++) {
int y = lines[point].first;
int x = lines[point].second;
int lastY = lines[point-1].first;
int lastX = lines[point-1].second;
int nextY = lines[point+1].first;
if (point == 0) {
lastY = lines[p-1].first;
lastX = lines[p-1].second;
} else if (point == p-1) {
nextY = lines[0].first;
}
pair<int, int> direction;
if (y > nextY && y < lastY) crosses[y][x].first = true;
else if (y < nextY && y > lastY) crosses[y][x].first = true;
else if (y == nextY && y > lastY) crosses[y][x].second = 1;
else if (y == nextY && y < lastY) crosses[y][x].second = -1;
else if (y < nextY && y == lastY) crosses[y][x].second = -1;
else if (y > nextY && y == lastY) crosses[y][x].second = 1;
char ascii = '0';
if (y == lastY && x < lastX) {
direction = {0, 1};
ascii = '=';
}
else if (y > lastY && x < lastX) {
direction = {-1, 1};
ascii = '/';
}
else if (x == lastX && y > lastY) {
direction = {-1, 0};
ascii = '|';
}
else if (y > lastY && x > lastX) {
direction = {-1, -1};
ascii = '\\';
}
else if (y == lastY && x > lastX) {
direction = {0, -1};
ascii = '=';
}
else if (y < lastY && x > lastX) {
direction = {1, -1};
ascii = '/';
}
else if (x == lastX && y < lastY) {
direction = {1, 0};
ascii = '|';
}
else if (y < lastY && x < lastX) {
direction = {1, 1};
ascii = '\\';
}
for (int index = 0; index < max(n, m); index++) {
if (grid[y + direction.first][x + direction.second] == '*') break;
y += direction.first;
x += direction.second;
grid[y][x] = ascii;
}
}
for (int index = 0; index < n; index++) {
pair<int, int> directions = {10, 10};
bool add = false;
for (int x = 0; x < m; x++) {
if (grid[index][x] == '*') {
if (crosses[index][x].first == 1 || x == m-1) add = !add;
else if (grid[index][x+1] == '=') directions.first = crosses[index][x].second;
else if (grid[index][x-1] == '=') {
if (directions.first == -crosses[index][x].second) add = !add;
directions = {10, 10};
}
} else if (grid[index][x] == '.') {
if (add) grid[index][x] = '#';
//grid[index].replace(start.first, x-start.first, x-start.first, '#');
} else if (grid[index][x] == '|' || grid[index][x] == '/' || grid[index][x] == '\\') {
add = !add;
}
}
}
for (int index = 0; index < n; index++) {
cout << grid[index] << endl;
}
}
Test details
Test 1 (public)
Verdict: ACCEPTED
| input |
|---|
| 8 9 5 5 2 2 5 5 8 7 8 ... |
| correct output |
|---|
| ......... ....*.... .../#\... ../###\.. .*#####*. ... |
| user output |
|---|
| ......... ....*.... .../#\... ../###\.. .*#####*. ... |
Test 2 (public)
Verdict: ACCEPTED
| input |
|---|
| 20 40 4 5 10 5 30 15 30 15 10 |
| correct output |
|---|
| ................................. |
| user output |
|---|
| ................................. |
Test 3 (public)
Verdict: ACCEPTED
| input |
|---|
| 20 40 29 8 7 13 2 14 2 9 7 ... |
| correct output |
|---|
| ................................. |
| user output |
|---|
| ................................. |
Test 4 (public)
Verdict: ACCEPTED
| input |
|---|
| 20 40 14 5 12 5 25 8 28 13 28 ... |
| correct output |
|---|
| ................................. |
| user output |
|---|
| ................................. |
Test 5 (public)
Verdict: ACCEPTED
| input |
|---|
| 20 40 12 3 20 7 16 7 9 11 13 ... |
| correct output |
|---|
| ................................. |
| user output |
|---|
| ................................. |
Test 6 (public)
Verdict: ACCEPTED
| input |
|---|
| 9 35 33 2 3 2 8 4 8 4 5 ... |
| correct output |
|---|
| ................................. |
| user output |
|---|
| ................................. |
Test 7 (public)
Verdict: ACCEPTED
| input |
|---|
| 30 100 69 6 10 6 14 7 14 7 18 ... |
| correct output |
|---|
| ................................. |
| user output |
|---|
| ................................. |
Feedback: Lines are drawn correctly. Incorrect fill character on row 16, col 97: expected '.', got '#'
Test 8 (public)
Verdict: ACCEPTED
| input |
|---|
| 40 60 192 11 3 11 5 10 6 11 7 ... |
| correct output |
|---|
| ................................. |
| user output |
|---|
| ................................. |
Test 9 (public)
Verdict: ACCEPTED
| input |
|---|
| 50 100 142 1 1 1 7 1 11 1 14 ... |
| correct output |
|---|
| *=====*===*==*................... |
| user output |
|---|
| *=====*===*==*................... |
Feedback: Lines are drawn correctly. Incorrect fill character on row 7, col 83: expected '.', got '#'
Test 10 (public)
Verdict: ACCEPTED
| input |
|---|
| 100 100 1000 10 1 4 7 1 4 1 9 ... |
| correct output |
|---|
| ...*====*........................ |
| user output |
|---|
| ...*====*........................ |
Feedback: Lines are drawn correctly. Incorrect fill character on row 2, col 70: expected '.', got '#'
