Submission #225693

#TimeUsernameProblemLanguageResultExecution timeMemory
225693emil_physmathSegments (IZhO18_segments)C++17
7 / 100
5089 ms3560 KiB
#include <iostream>
#include <stdio.h>
#include <queue>
#include <vector>
#include <set>
using namespace std;

int main()
{
    int n, t;
    cin >> n >> t;
	int prevans = 0;
	vector<pair<int, int> > seg;
	while (n--)
	{
		int type, l, r, k, id;
		cin >> type;
		if (type == 1)
		{
			cin >> l >> r;
			l = (l ^ (t * prevans));
			r = (r ^ (t * prevans));
			if (l > r) swap(l, r);
			seg.push_back(make_pair(l, r));
		}
		else if (type == 2)
		{
			cin >> id;
			seg[id - 1] = make_pair(-1, -1);
		}
		else if (type==3)
		{
			cin >> l >> r >> k;
			l = (l ^ (t * prevans));
			r = (r ^ (t * prevans));
			if (l > r) swap(l, r);
			int ans = 0;
            for (auto p: seg)
                if (p.first != -1)
                    ++ans;
            for (auto p: seg)
                if (p.first != -1 && p.second - p.first < k - 1)
                    --ans;
            for (auto p: seg)
                if (p.first != -1 && p.second - p.first >= k - 1 && p.second - l < k - 1)
                    --ans;
            for (auto p: seg)
                if (p.first != -1 && p.second - p.first >= k - 1 && r - p.first < k - 1)
                    --ans;
			cout << ans << '\n';
#ifdef MANSON
            cout << flush;
#endif // MANSON
			prevans = ans;
		}
	}
}
#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...