Submission
Status:
PPPPPPPPPP
Score: 100
User: pxsit
Problemset: Path Finding
Language: c
Time: 0.002 second
Submitted On: 2025-03-12 13:34:26
#include <stdio.h>
void printMap(char map[100][100], int N) {
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
printf("%c ", map[i][j]);
}
printf("\n");
}
}
int main() {
int N, nPoint;
scanf("%d", &N);
scanf("%d", &nPoint);
int points[nPoint][2];
for (int i = 0; i < nPoint; i++) {
scanf("%d %d", &points[i][0], &points[i][1]);
}
for (int i = 0; i < nPoint; i++) {
if (points[i][0] < 0 || points[i][0] >= N || points[i][1] < 0 || points[i][1] >= N) {
printf("Out of range\n");
return 0;
}
}
char map[100][100];
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
map[i][j] = '_';
}
}
char currentChar = 'A';
for (int i = 0; i < nPoint - 1; i++) {
int r1 = points[i][0];
int c1 = points[i][1];
int r2 = points[i + 1][0];
int c2 = points[i + 1][1];
map[r1][c1] = currentChar;
if (r1 != r2 && c1 != c2) {
if (c1 < c2) {
for (int j = c1 + 1; j <= c2 - 1; j++) {
map[r1][j] = '>';
}
map[r1][c2] = (r1 < r2) ? 'v' : '^';
} else {
for (int j = c1 - 1; j >= c2 + 1; j--) {
map[r1][j] = '<';
}
map[r1][c2] = (r1 < r2) ? 'v' : '^';
}
if (r1 < r2) {
for (int j = r1 + 1; j < r2; j++) {
map[j][c2] = 'v';
}
} else {
for (int j = r1 - 1; j > r2; j--) {
map[j][c2] = '^';
}
}
} else {
if (r1 == r2) {
if (c1 < c2) {
for (int j = c1 + 1; j <= c2; j++) {
map[r1][j] = '>';
}
} else {
for (int j = c1 - 1; j >= c2; j--) {
map[r1][j] = '<';
}
}
} else {
if (r1 < r2) {
for (int j = r1 + 1; j <= r2; j++) {
map[j][c1] = 'v';
}
} else {
for (int j = r1 - 1; j >= r2; j--) {
map[j][c1] = '^';
}
}
}
}
currentChar++;
}
map[points[nPoint - 1][0]][points[nPoint - 1][1]] = currentChar;
printMap(map, N);
return 0;
}