Submission

Status:
[PP-SSSSSSS]

Score: 0

User: KhunKK9722

Problemset: Path Finding

Language: cpp

Time: 0.001 second

Submitted On: 2025-03-14 09:15:06

#include <stdio.h>
int size;
int n;
int currentR, currentC, lastR, lastC, difR, difC;
char letter = 65; // start with 'A'
int right = false;
int up = false;
int cursorR;
int cursorC;
bool error = false;

int compare()
{
    if (lastR - currentR < 0)
    {
        difC = (lastR - currentR) * -1;
        up = 0;
    }
    else
    {
        difC = (lastR - currentR);
        up = 1;
    }
    if (lastC - currentC < 0)
    {
        difR = (lastC - currentC) * -1;
        right = 0;
    }
    else
    {
        difR = (lastC - currentC);
        right = 1;
    }
    return 0;
}
int main()
{
    scanf("%d", &size); // input size
    char map[size][size] = {};
    scanf("%d", &n); // input amount of positions
    for (int i = 0; i < n; i++)
    {
        scanf("%d %d", &currentR, &currentC); // input position
        if(currentR>size||currentC>size||currentC<0||currentR<0){
            error = true;
            break;
        }
        if (i > 0)
        {   
            cursorR = lastC;
            cursorC = lastR;
            compare();
            switch (right)
            {
            case 0:
                for (int i = 0; i < difR; i++)
                {
                    cursorR++;
                    // if(map[cursorR][cursorC]<65||map[cursorR][cursorC]>91)
                    map[cursorR][cursorC] = '>';
                    
                }
                break;
            case 1:
                for (int i = 0; i < difR; i++)
                {
                    // if(map[cursorR][cursorC]<65||map[cursorR][cursorC]>91)
                    cursorR--;
                    map[cursorR][cursorC] = '<';
                    
                }
                break;
            default:
                for (int i = 0; i < difR; i++)
                {
                    cursorR++;
                    // if(map[cursorR][cursorC]<65||map[cursorR][cursorC]>91)
                    map[cursorR][cursorC] = '>';
                    
                }
                break;
            }
            switch (up)
            {
            case 1:
                for (int i = 0; i < difC; i++)
                {
                    // if(map[cursorR][cursorC]<65||map[cursorR][cursorC]>91)
                    map[cursorR][cursorC] = '^';
                    cursorC--;
                }
                break;
            case 0:
                for (int i = 0; i < difC; i++)
                {
                    // if(map[cursorR][cursorC]<65||map[cursorR][cursorC]>91)
                    map[cursorR][cursorC] = 'v';
                    cursorC++;
                }
                break;
            default:
                for (int i = 0; i < difC; i++)
                {
                    // if(map[cursorR][cursorC]<65||map[cursorR][cursorC]>91)
                    map[cursorR][cursorC] = '^';
                    cursorC--;
                }
                break;
            }
        }
        map[currentC][currentR] = letter;
        letter++;
        lastR = currentR;
        lastC = currentC;
    }
    if(error) printf("Out of range");
    else
    for (int i = 0; i < size; i++)
    {
        for (int j = 0; j < size; j++)
        {
            if (map[j][i] == NULL)
                printf("_");
            else
                printf("%c", map[j][i]);
        }
        printf("\n");
    }
    return 0;
}