111111111111111111111

Правка ru1, от HaykManukyan777, 2024-10-24 10:15:36

include <bits/stdc++.h>

using namespace std;

const int N = 3e5 + 10; int a[N], p[N], mx[N], sz[N]; vector component[N]; int n, m;

void init() { for (int i = 1; i <= n; i++) { p[i] = i; component[i].push_back(i); mx[i] = i; } }

void un(int a, int b) { a=p[a]; b=p[b]; if(a!=b) { if (component[a].size()>component[b].size()) { mx[a] = max(mx[a], mx[b]); for (auto i : component[b]) { component[a].push_back(i); p[i]=a; } component[b].clear(); } else { mx[b] = max(mx[a], mx[b]); for (auto i : component[a]) { component[b].push_back(i); p[i]=b; } component[a].clear(); } } }

int main() { cin >> n >> m; init(); for (int i = 0; i < m; i++) { char jm; cin>>jm; int k; cin>>k; k=p[k]; int x = mx[p[x]]; if(jm=='?') { cout << x << endl; } else { if(x!=n) { un(x, x + 1);
} else { mx[k]=-1; } } } }

История

 
 
 
 
Правки
 
 
  Rev. Язык Кто Когда Δ Комментарий
ru1 Русский HaykManukyan777 2024-10-24 10:15:36 1420 Первая редакция (опубликовано)