제출 #335285

#제출 시각아이디문제언어결과실행 시간메모리
335285limabeansSegments (IZhO18_segments)C++17
7 / 100
5099 ms4588 KiB
#include <bits/stdc++.h>
using namespace std;

template<typename T>
void out(T x) { cout << x << endl; exit(0); }
#define watch(x) cout << (#x) << " is " << (x) << endl





using ll = long long;


const int maxn = 1e6 + 5;

int n,t;
multiset<pair<int,int>> ms;
int id;

pair<int,int> a[maxn];

int main() {
    ios_base::sync_with_stdio(false); cin.tie(0);  cout.tie(0);

    cin>>n>>t;

    int lastans=0;

    while (n--) {
	int op;
	cin>>op;
	if (op==1) {
	    ++id;
	    cin>>a[id].first>>a[id].second;
	    ms.insert({a[id].first,a[id].second});
	} else if (op==2) {
	    int i;
	    cin>>i;
	    ms.erase(ms.find({a[i].first,a[i].second}));
	} else if (op==3) {
	    int l,r,k;
	    cin>>l>>r>>k;
	    l=l^(t*lastans);
	    r=r^(t*lastans);
	    if (l>r) swap(l,r);
	    int res=0;
	    for (auto p: ms) {
		int x=max(l,p.first);
		int y=min(r,p.second);
		if (y-x+1>=k) res++;
	    }
	    cout<<res<<"\n";
	    lastans=res;
	} else assert(false);
    }
    
    
    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...