#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define ull unsigned long long
#define ld long double
#define ff first
#define ss second
#define ln "\n"
#define mp make_pair
const ll INF = 2e18;
const ll MOD = 1e9+7;
void solve(){
ll n, t; cin >> n >> t;
ll id=1;
set<pair<ll, pair<ll, ll>>> elem;
ll lastans=0;
while (n--){
ll typ; cin >> typ;
if (typ==1){
ll a, b; cin >> a >> b;
a^=(t*lastans); b^=(t*lastans);
if(a>b) swap(a, b);
// cout << id << "-" << a << "-" << b << ln;
elem.insert({id, {a, b}}); id++;
}else if (typ==2){
ll x; cin >> x;
// cout << x << "-" << (*elem.lower_bound({x, {0, 0}})).ff << ln;
elem.erase(elem.lower_bound({x, {0, 0}}));
}else{
ll l, r, k; cin >> l >> r >> k;
l^=(t*lastans); r^=(t*lastans);
if (l>r) swap(l, r);
ll res=0;
for (auto &ch:elem){
if (min(ch.ss.ss, r)-max(ch.ss.ff, l)+1>=k) res++;
}
cout << res << ln;
lastans=res;
}
}
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
auto start = chrono::high_resolution_clock::now();
ll t=1;
// cin >> t;
while (t--) solve();
#ifdef LOCAL
auto duration = chrono::duration_cast<chrono::microseconds>(chrono::high_resolution_clock::now() - start);
cout << setprecision(0) << fixed << "time: " << (double)duration.count()/1000.0 << " milliseconds" << endl;
#endif
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |