LKNIGHT - Mã đi tuần

Tác giả: RR

Ngôn ngữ: C++

#include <iostream>
#include <algorithm>
#include <fstream>

using namespace std;

const int di[] = {-2, -1, 1, 2,  2,  1, -1, -2};
const int dj[] = { 1,  2, 2, 1, -1, -2, -2, -1};

int n;

void maintain(int &x) {
    if (x < 1) x = 1;
    if (x > n) x = n;
}

int main() {
    int k;
    cin >> n >> k;
    int left = 1, right = n, up = 1, down = n;

    string s;
    cin >> s;
    for(int i = 0; i < k; i++) {
        int dir = s[i] - '1';
        left += dj[dir];
        right += dj[dir];
        up += di[dir];
        down += di[dir];
        maintain(left);
        maintain(right);
        maintain(up);
        maintain(down);
    }

    cout << (right - left + 1) * (down - up + 1);
    return 0;
}
	

Download