社区讨论
Chtholly Tree RE on #7求助/kk
CF817FMEX Queries参与者 4已保存回复 5
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 5 条
- 当前快照
- 1 份
- 快照标识符
- @locn1fg9
- 此快照首次捕获于
- 2023/10/30 16:28 2 年前
- 此快照最后确认于
- 2023/11/05 03:32 2 年前
RT.
Code:
CPP#include <iostream>
#include <set>
#include <vector>
#include <algorithm>
#define int long long
using namespace std;
struct node
{
int l, r;
mutable int v;
node(int L, int R = -1, int V = 0)
{
l = L;
r = R;
v = V;
}
};
bool operator<(const node &n, const node &m)
{
return n.l < m.l;
}
set<node> s;
#define IT set<node>::iterator
IT split(int pos)
{
IT it = s.lower_bound(node(pos));
if (it != s.end() && it->l == pos)
return it;
it--;
int l = it->l, r = it->r, v = it->v;
s.erase(it);
s.insert(node(l, pos - 1, v));
return s.insert(node(pos, r, v)).first;
}
void assign(int l, int r, int v = 0)
{
IT itl = split(l), itr = split(r + 1);
s.erase(itl, itr);
s.insert(node(l, r, v));
}
void add(int l, int r)
{
IT itl = split(l), itr = split(r + 1);
for (; itl != itr; ++itl)
itl->v = !itl->v;
}
int n, op, l, r;
signed main()
{
cin >> n;
s.insert(node(1, 1e18, 0));
for (int i = 0; i < n; i++)
{
cin >> op >> l >> r;
if (op == 1)
{
assign(l, r, 1);
}
if (op == 2)
{
assign(l, r, 0);
}
if (op == 3)
{
add(l, r);
}
for (IT iter = s.begin(); iter != s.end(); iter++)
{
if (!iter->v)
{
cout << iter->l << endl;
break;
}
}
}
return 0;
}
回复
共 5 条回复,欢迎继续交流。
正在加载回复...