145772025-01-17 16:39:18miszorimarciÜtős helyzet (75 pont)cpp17Elfogadva 75/753ms564 KiB
#include <bits/stdc++.h>
using namespace std;

vector<vector<int>> v(8, vector<int>(8));

void setv(int X, int Y, int type, bool diag, int val) {
    for (int i = Y + 1; i < 8; i++) {
        v[i][X] = val;
    }
    for (int i = Y - 1; i >= 0; i--) {
        v[i][X] = val;
    }
    for (int j = X + 1; j < 8; j++) {
        v[Y][j] = val;
    }
    for (int j = X - 1; j >= 0; j--) {
        v[Y][j] = val;
    }

    if (diag) {
        for (int i = Y + 1, j = X + 1; i < 8 && j < 8; i++, j++) {
            v[i][j] = val;
        }
        for (int i = Y - 1, j = X - 1; i >= 0 && j >= 0; i--, j--) {
            v[i][j] = val;
        }
        for (int i = Y - 1, j = X + 1; i >= 0 && j < 8; i--, j++) {
            v[i][j] = val;
        }
        for (int i = Y + 1, j = X - 1; i < 8 && j >= 0; i++, j--) {
            v[i][j] = val;
        }
    }

    v[Y][X] = type;
}

bool b(int X, int Y, int T) {
    if (T == 1) return 1;
    for (int i = Y + 1, j = X + 1; i < 8 && j < 8; i++, j++) {
        if (v[i][j] > 1) return 0;
    }
    for (int i = Y - 1, j = X - 1; i >= 0 && j >= 0; i--, j--) {
        if (v[i][j] > 1) return 0;
    }
    for (int i = Y - 1, j = X + 1; i >= 0 && j < 8; i--, j++) {
        if (v[i][j] > 1) return 0;
    }
    for (int i = Y + 1, j = X - 1; i < 8 && j >= 0; i++, j--) {
        if (v[i][j] > 1) return 0;
    }
    return 1;
}

int main() {
    int N;
    cin >> N;
    for (int tc = 1; tc <= N; tc++) {
        int T, X, Y;
        cin >> T >> Y >> X;
        X--; Y--;
        if (T == 3) {
            setv(X, Y, 0, v[Y][X] == 3, 0);
            for (int i = 0; i < 8; i++) {
                for (int j = 0; j < 8; j++) {
                    if (v[i][j] > 1) {
                        setv(j, i, v[i][j], v[i][j] == 3, 1);
                    }
                }
            }
            cout << "-\n";
            continue;
        }
        if (v[Y][X] || !b(X, Y, T)) {
            cout << "NEM\n";
            continue;
        }
        setv(X, Y, T + 1, T == 2, 1);
        cout << "IGEN\n";
    }
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base75/75
1Elfogadva0/01ms316 KiB
2Elfogadva0/03ms408 KiB
3Elfogadva2/21ms316 KiB
4Elfogadva2/21ms316 KiB
5Elfogadva3/31ms316 KiB
6Elfogadva3/33ms316 KiB
7Elfogadva5/53ms508 KiB
8Elfogadva6/63ms508 KiB
9Elfogadva6/63ms316 KiB
10Elfogadva6/63ms508 KiB
11Elfogadva6/63ms508 KiB
12Elfogadva6/63ms328 KiB
13Elfogadva6/63ms508 KiB
14Elfogadva6/63ms404 KiB
15Elfogadva6/63ms564 KiB
16Elfogadva6/63ms316 KiB
17Elfogadva6/63ms316 KiB