244222026-02-11 13:50:57miszorimarciKedvenc számokcpp17Elfogadva 100/100954ms63800 KiB
#include <bits/stdc++.h>

using namespace std;

const int MAXN = 300005;
int N, M, Q;
int A[MAXN];
int fav_id[MAXN]; 
set<int> pos[MAXN]; 
multiset<int> head_gaps; 
int tree[4 * MAXN];

void update(int node, int start, int end, int idx, int val) {
    if (start == end) {
        tree[node] = val;
        return;
    }
    int mid = (start + end) / 2;
    if (idx <= mid) update(2 * node, start, mid, idx, val);
    else update(2 * node + 1, mid + 1, end, idx, val);
    tree[node] = max(tree[2 * node], tree[2 * node + 1]);
}

int query(int node, int start, int end, int l, int r) {
    if (r < start || end < l) return 0;
    if (l <= start && end <= r) return tree[node];
    int mid = (start + end) / 2;
    return max(query(2 * node, start, mid, l, r), query(2 * node + 1, mid + 1, end, l, r));
}

void add_gap(int a, int b) {
    if (a > b) return;
    if (a == 1) {
        head_gaps.insert(b);
        update(1, 1, N + 1, 1, *head_gaps.rbegin());
    } else {
        update(1, 1, N + 1, a, b);
    }
}

void remove_gap(int a, int b) {
    if (a > b) return;
    if (a == 1) {
        auto it = head_gaps.find(b);
        if (it != head_gaps.end()) head_gaps.erase(it);
        update(1, 1, N + 1, 1, head_gaps.empty() ? 0 : *head_gaps.rbegin());
    } else {
        update(1, 1, N + 1, a, 0);
    }
}

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

    cin >> N >> M >> Q;
    for (int i = 1; i <= N; i++) cin >> A[i];
    for (int i = 1; i <= M; i++) {
        int b;
        cin >> b;
        fav_id[b] = i;
        pos[i].insert(0);
        pos[i].insert(N + 1);
    }

    for (int i = 1; i <= N; i++) {
        if (fav_id[A[i]]) {
            pos[fav_id[A[i]]].insert(i);
        }
    }

    for (int i = 1; i <= M; i++) {
        for (auto it = pos[i].begin(); next(it) != pos[i].end(); ++it) {
            add_gap(*it + 1, *next(it) - 1);
        }
    }

    while (Q--) {
        int type;
        cin >> type;
        if (type == 1) {
            int k, x;
            cin >> k >> x;
            if (A[k] == x) continue;

            if (fav_id[A[k]]) {
                int id = fav_id[A[k]];
                auto it = pos[id].find(k);
                int pr = *prev(it), nx = *next(it);
                remove_gap(pr + 1, k - 1);
                remove_gap(k + 1, nx - 1);
                pos[id].erase(it);
                add_gap(pr + 1, nx - 1);
            }

            A[k] = x;

            if (fav_id[A[k]]) {
                int id = fav_id[A[k]];
                auto it = pos[id].insert(k).first;
                int pr = *prev(it), nx = *next(it);
                remove_gap(pr + 1, nx - 1);
                add_gap(pr + 1, k - 1);
                add_gap(k + 1, nx - 1);
            }
        } else {
            int l, r; cin >> l >> r;
            if (query(1, 1, N + 1, 1, l) >= r) cout << "NEM\n";
            else cout << "IGEN\n";
        }
    }

    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva14ms14388 KiB
2Elfogadva122ms20532 KiB
subtask210/10
3Elfogadva14ms14836 KiB
4Elfogadva14ms14644 KiB
5Elfogadva17ms14644 KiB
6Elfogadva17ms14836 KiB
7Elfogadva17ms14704 KiB
8Elfogadva17ms14684 KiB
9Elfogadva14ms14656 KiB
10Elfogadva14ms14572 KiB
11Elfogadva17ms14808 KiB
12Elfogadva14ms14644 KiB
13Elfogadva17ms14760 KiB
14Elfogadva14ms14644 KiB
15Elfogadva14ms14572 KiB
subtask315/15
16Elfogadva314ms32828 KiB
17Elfogadva513ms37692 KiB
18Elfogadva620ms44340 KiB
19Elfogadva954ms52880 KiB
20Elfogadva866ms63540 KiB
21Elfogadva451ms40756 KiB
22Elfogadva737ms44500 KiB
23Elfogadva708ms44340 KiB
subtask420/20
24Elfogadva317ms34108 KiB
25Elfogadva405ms38764 KiB
26Elfogadva479ms45468 KiB
27Elfogadva569ms53392 KiB
28Elfogadva760ms63800 KiB
29Elfogadva391ms41780 KiB
30Elfogadva469ms45504 KiB
31Elfogadva550ms45364 KiB
32Elfogadva338ms42356 KiB
33Elfogadva347ms47248 KiB
34Elfogadva374ms48792 KiB
35Elfogadva349ms44080 KiB
36Elfogadva395ms41728 KiB
37Elfogadva342ms43828 KiB
38Elfogadva344ms41524 KiB
subtask525/25
39Elfogadva14ms14836 KiB
40Elfogadva14ms14644 KiB
41Elfogadva17ms14644 KiB
42Elfogadva17ms14836 KiB
43Elfogadva17ms14704 KiB
44Elfogadva17ms14684 KiB
45Elfogadva14ms14656 KiB
46Elfogadva14ms14572 KiB
47Elfogadva17ms14808 KiB
48Elfogadva14ms14644 KiB
49Elfogadva17ms14760 KiB
50Elfogadva14ms14644 KiB
51Elfogadva14ms14572 KiB
52Elfogadva68ms18400 KiB
53Elfogadva82ms19016 KiB
54Elfogadva93ms20020 KiB
55Elfogadva130ms22112 KiB
56Elfogadva189ms27456 KiB
57Elfogadva104ms21188 KiB
58Elfogadva149ms22100 KiB
59Elfogadva133ms22068 KiB
60Elfogadva160ms22148 KiB
61Elfogadva108ms22320 KiB
62Elfogadva175ms27312 KiB
63Elfogadva162ms30200 KiB
64Elfogadva90ms21300 KiB
65Elfogadva86ms21824 KiB
66Elfogadva97ms22600 KiB
67Elfogadva93ms22776 KiB
68Elfogadva96ms24376 KiB
69Elfogadva87ms22836 KiB
70Elfogadva86ms22068 KiB
71Elfogadva93ms22924 KiB
72Elfogadva85ms22068 KiB
subtask630/30
73Elfogadva14ms14532 KiB
74Elfogadva137ms20692 KiB
75Elfogadva14ms14836 KiB
76Elfogadva14ms14644 KiB
77Elfogadva17ms14644 KiB
78Elfogadva17ms14836 KiB
79Elfogadva17ms14704 KiB
80Elfogadva17ms14684 KiB
81Elfogadva14ms14656 KiB
82Elfogadva14ms14572 KiB
83Elfogadva17ms14808 KiB
84Elfogadva14ms14644 KiB
85Elfogadva17ms14760 KiB
86Elfogadva14ms14644 KiB
87Elfogadva14ms14572 KiB
88Elfogadva68ms18400 KiB
89Elfogadva82ms19016 KiB
90Elfogadva93ms20020 KiB
91Elfogadva130ms22112 KiB
92Elfogadva189ms27456 KiB
93Elfogadva104ms21188 KiB
94Elfogadva149ms22100 KiB
95Elfogadva133ms22068 KiB
96Elfogadva160ms22148 KiB
97Elfogadva108ms22320 KiB
98Elfogadva175ms27312 KiB
99Elfogadva162ms30200 KiB
100Elfogadva90ms21300 KiB
101Elfogadva86ms21824 KiB
102Elfogadva97ms22600 KiB
103Elfogadva93ms22776 KiB
104Elfogadva96ms24376 KiB
105Elfogadva87ms22836 KiB
106Elfogadva86ms22068 KiB
107Elfogadva93ms22924 KiB
108Elfogadva85ms22068 KiB
109Elfogadva314ms32828 KiB
110Elfogadva513ms37692 KiB
111Elfogadva620ms44340 KiB
112Elfogadva954ms52880 KiB
113Elfogadva866ms63540 KiB
114Elfogadva451ms40756 KiB
115Elfogadva737ms44500 KiB
116Elfogadva708ms44340 KiB
117Elfogadva317ms34108 KiB
118Elfogadva405ms38764 KiB
119Elfogadva479ms45468 KiB
120Elfogadva569ms53392 KiB
121Elfogadva760ms63800 KiB
122Elfogadva391ms41780 KiB
123Elfogadva469ms45504 KiB
124Elfogadva550ms45364 KiB
125Elfogadva338ms42356 KiB
126Elfogadva347ms47248 KiB
127Elfogadva374ms48792 KiB
128Elfogadva349ms44080 KiB
129Elfogadva395ms41728 KiB
130Elfogadva342ms43828 KiB
131Elfogadva344ms41524 KiB
132Elfogadva230ms28620 KiB
133Elfogadva279ms31028 KiB
134Elfogadva367ms33860 KiB
135Elfogadva540ms38452 KiB
136Elfogadva778ms45200 KiB
137Elfogadva791ms53300 KiB
138Elfogadva883ms63748 KiB
139Elfogadva527ms41104 KiB
140Elfogadva679ms44880 KiB
141Elfogadva643ms45020 KiB
142Elfogadva635ms45052 KiB