Submission #970622

#TimeUsernameProblemLanguageResultExecution timeMemory
970622vladiliusInside information (BOI21_servers)C++17
0 / 100
17 ms1628 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; using pii = pair<int, int>; struct FT{ vector<int> bit; int n; FT(int ns){ n = ns; bit.resize(n + 1); } void upd(int v, int k){ while (v <= n){ bit[v] += k; v |= (v + 1); } } void add(int l, int r, int k){ upd(l, k); upd(r + 1, -k); } int get(int v){ int out = 0; while (v > 0){ out += bit[v]; v = (v & (v + 1)) - 1; } return out; } }; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n, q; cin>>n>>q; q += (n - 1); vector<int> l(n + 1), r(n + 1); FT T(n); for (int i = 1; i <= n; i++){ l[i] = r[i] = i; T.add(i, i, 1); } while (q--){ char type; int a; cin>>type>>a; if (type == 'S'){ int b; cin>>b; pii m = {min(l[a], l[b]), max(r[a], r[b])}; T.add(l[a], r[a], -1); T.add(l[b], r[b], -1); T.add(m.first, m.second, 2); } else if (type == 'Q'){ int d; cin>>d; if (l[a] <= d && d <= r[a]){ cout<<"yes"<<"\n"; } else { cout<<"no"<<"\n"; } } else { cout<<T.get(a)<<"\n"; } } }
#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...