115652024-10-26 23:01:56balintPac-Mancpp17Időlimit túllépés 18/1003.099s7748 KiB
#include <iostream>
#include <set>
#include <vector>
#include <tuple>
#include <sstream>
#include <iterator>

using namespace std;

int main() {
    int N;
    cin >> N; // Read the number of points
    cin.ignore(); // Ignore the newline after reading N

    // Vectors to store the coordinates
    vector<int> X(N), Y(N), Z(N);

    // Read the X coordinates
    for (int i = 0; i < N; ++i) {
        cin >> X[i];
    }
    cin.ignore(); // Ignore the newline after reading X

    // Read the Y coordinates
    for (int i = 0; i < N; ++i) {
        cin >> Y[i];
    }
    cin.ignore(); // Ignore the newline after reading Y

    // Read the Z coordinates
    for (int i = 0; i < N; ++i) {
        cin >> Z[i];
    }

    // Set to hold unique positions
    set<tuple<int, int, int>> poses;
    
    // Populate the set with the tuples
    for (int i = 0; i < N; ++i) {
        poses.insert(make_tuple(X[i], Y[i], Z[i]));
    }

    // Check the movement between positions
    for (auto from_pos = poses.begin(); from_pos != poses.end(); ++from_pos) {
        for (auto to_pos = next(from_pos); to_pos != poses.end(); ++to_pos) {
            vector<int> ghost_pos = {get<0>(*from_pos), get<1>(*from_pos), get<2>(*from_pos)};

            vector<int> dirs = {
                (get<0>(*to_pos) > ghost_pos[0]) - (get<0>(*to_pos) < ghost_pos[0]),
                (get<1>(*to_pos) > ghost_pos[1]) - (get<1>(*to_pos) < ghost_pos[1]),
                (get<2>(*to_pos) > ghost_pos[2]) - (get<2>(*to_pos) < ghost_pos[2])
            };

            // Continue moving the ghost until it reaches the destination
            while (ghost_pos != vector<int>{get<0>(*to_pos), get<1>(*to_pos), get<2>(*to_pos)}) {
                bool moved = false;
                for (int axis = 0; axis < 3; ++axis) {
                    // Use get with a constant index
                    if (ghost_pos[axis] != (axis == 0 ? get<0>(*to_pos) : (axis == 1 ? get<1>(*to_pos) : get<2>(*to_pos)))) {
                        vector<int> next_pos = ghost_pos;
                        next_pos[axis] += dirs[axis];
                        if (poses.count(make_tuple(next_pos[0], next_pos[1], next_pos[2]))) {
                            ghost_pos[axis] += dirs[axis];
                            moved = true;
                            break;
                        }
                    }
                }
                if (!moved) {
                    cout << "NO" << endl;
                    return 0; // Exit on failure
                }
            }
        }
    }

    cout << "YES" << endl;
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva1ms320 KiB
2Elfogadva1ms320 KiB
3Elfogadva1ms320 KiB
subtask218/18
4Elfogadva1ms320 KiB
5Elfogadva1ms320 KiB
6Elfogadva14ms320 KiB
7Elfogadva4ms320 KiB
8Elfogadva3ms320 KiB
9Elfogadva1ms512 KiB
10Elfogadva4ms320 KiB
11Elfogadva3ms412 KiB
12Elfogadva1ms508 KiB
13Elfogadva2ms320 KiB
subtask30/19
14Elfogadva8ms724 KiB
15Elfogadva79ms500 KiB
16Elfogadva7ms824 KiB
17Elfogadva1.748s944 KiB
18Időlimit túllépés3.091s824 KiB
19Időlimit túllépés3.092s824 KiB
20Elfogadva1ms320 KiB
21Elfogadva19ms568 KiB
22Elfogadva8ms824 KiB
23Elfogadva2.387s960 KiB
24Időlimit túllépés3.085s824 KiB
25Elfogadva21ms824 KiB
26Elfogadva1ms320 KiB
subtask40/24
27Elfogadva116ms7748 KiB
28Időlimit túllépés3.085s420 KiB
29Időlimit túllépés3.085s7736 KiB
30Időlimit túllépés3.085s7748 KiB
31Időlimit túllépés3.086s7736 KiB
32Időlimit túllépés3.085s7736 KiB
33Elfogadva114ms320 KiB
34Időlimit túllépés3.085s7748 KiB
35Időlimit túllépés3.079s7736 KiB
36Időlimit túllépés3.082s7744 KiB
37Időlimit túllépés3.078s7736 KiB
38Elfogadva116ms7740 KiB
39Elfogadva97ms760 KiB
subtask50/22
40Elfogadva126ms7732 KiB
41Elfogadva94ms320 KiB
42Elfogadva32ms2540 KiB
43Elfogadva172ms7480 KiB
44Időlimit túllépés3.086s7740 KiB
45Időlimit túllépés3.072s7736 KiB
46Elfogadva1ms416 KiB
47Elfogadva39ms416 KiB
48Elfogadva63ms1848 KiB
49Időlimit túllépés3.099s6968 KiB
50Elfogadva114ms7736 KiB
51Időlimit túllépés3.085s7732 KiB
52Elfogadva114ms7736 KiB
53Elfogadva2ms320 KiB
subtask60/17
54Elfogadva156ms7732 KiB
55Időlimit túllépés3.084s7736 KiB
56Elfogadva222ms7740 KiB
57Elfogadva477ms7736 KiB
58Időlimit túllépés3.079s7736 KiB
59Időlimit túllépés3.081s7736 KiB
60Időlimit túllépés3.089s7736 KiB
61Elfogadva247ms7736 KiB
62Elfogadva279ms7736 KiB
63Időlimit túllépés3.092s7736 KiB
64Időlimit túllépés3.099s7736 KiB
65Elfogadva935ms7736 KiB
66Időlimit túllépés3.099s7736 KiB