Submission

Status:

[PxSSSSSSSS]

Subtask/Task Score:

{0/100}

Score: 0

User: Bestzu

Problemset: Path Finding

Language: cpp

Time: 0.002 second

Submitted On: 2025-10-16 09:34:34

#include<bits/stdc++.h>
#define endl '\n'
using namespace std;

int main() {
    ios::sync_with_stdio(false); cin.tie(nullptr);

    int n; cin >> n;
    vector<pair<int,int>> point;
    vector<vector<char>> arr(n, vector<char>(n, '_'));
    
    int npoint; cin >> npoint;
    char ch = 'A';
    
    bool out = false;
    for(int i = 0; i < npoint; i++) {
        int r, c; cin >> r >> c;
        if(r < 0 || r >= n || c < 0 || c >= n) out = true;
        arr[r][c] = ch + i; // mark letter
        point.push_back({r, c});
    }
	if(out) {
		cout << "?Out of range" << endl;
		return 0;
	}
    for(int k = 0; k < npoint-1; k++) {
        int si = point[k].first;
        int sj = point[k].second;
        int vi = point[k+1].first;
        int vj = point[k+1].second;
		bool start = false;
        // move horizontally first
        if(sj < vj) { // move right
            for(int j = sj; j < vj; j++) {
            	if(j == sj && !start) continue;
                arr[si][j] = '>';
            }
        	start = true;
        } 
        else if(sj > vj) { // move left
            for(int j = sj; j > vj; j--) {
            	if(j == sj && !start) continue;
                arr[si][j] = '<';
            }
        	start = true;
        }

        // then move vertically
        if(si < vi) { // move down
            for(int i = si; i < vi; i++) {
            	if(i == si && !start) continue;
                arr[i][vj] = 'v';
            }
        	start = true;
        } 
        else if(si > vi) { // move up
            for(int i = si; i > vi; i--) {
            	if(i == si && !start) continue;
                arr[i][vj] = '^';
            }
        	start = true;
        }
    }

    // print result
    for(int i = 0; i < n; i++) {
        for(int j = 0; j < n; j++) cout << arr[i][j];
        cout << endl;
    }

    return 0;
}