제출 #1167987

#제출 시각아이디문제언어결과실행 시간메모리
1167987Troll321Inside information (BOI21_servers)C++20
0 / 100
13 ms3656 KiB
#include <bits/stdc++.h> #define fi first #define se second using namespace std; typedef long long ll; typedef pair<ll, ll> pll; typedef pair<bool, bool> pbb; const ll MAXN = 120000 + 5; const ll MAXQ = 2*MAXN; ll n, k; pll range[MAXN]; // {L, R} pbb extend[MAXN]; // {Lext, Rext} pair<char, pll> query[MAXQ]; // {Type, {a, b}} void addEdge(ll a, ll b) { if(a > b) {swap(a,b);} // Extend A range[a].se = b; extend[a].se = ((range[b].se - range[b].fi) == 0); // Extend B range[b].fi = a; extend[b].fi = ((range[a].se - range[a].fi) == 0); } ll findL(ll x) { if(extend[x].fi && range[x].fi != x) { range[x].fi = findL(range[x].fi); return range[x].fi; } return range[x].fi; } ll findR(ll x) { if(extend[x].se && range[x].se != x) { range[x].se = findR(range[x].se); return range[x].se; } return range[x].se; } pll find(ll x) { return {findL(x), findR(x)}; } void data(ll a, ll b) { // Apakah B nyampe A pll out = find(b); cout << ((out.fi <= a && a <= out.se) ? "yes" : "no") << "\n"; } void count(ll a) { pll out = find(a); cout << (out.se - out.fi + 1) << "\n"; } void input() { cin >> n >> k; for (int i = 1; i <= n; ++i) { range[i] = {i,i}; extend[i] = {true, true}; } for (int i = 1; i <= n+k-1; ++i) { cin >> query[i].fi; switch(query[i].fi) { case 'S': cin >> query[i].se.fi >> query[i].se.se; addEdge(query[i].se.fi, query[i].se.se); break ; case 'Q': cin >> query[i].se.fi >> query[i].se.se; data(query[i].se.fi, query[i].se.se); break ; case 'C': cin >> query[i].se.fi; count(query[i].se.fi); break ; } } } int main() { ios_base::sync_with_stdio(false); cin.tie(0); input(); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...