제출 #1116943

#제출 시각아이디문제언어결과실행 시간메모리
1116943vjudge1Segments (IZhO18_segments)C++17
7 / 100
5063 ms12104 KiB
#include <bits/stdc++.h>
  
using namespace std;
  
#define int long long
#define pb push_back
#define sz(x) x.size()
#define F first
#define S second
#define nl '\n'
  
const int N = 2e5 + 1;
int q, t, lans, id1;
multiset< pair<int, int> >s;
map<int, pair<int, int>>mp;

signed main() 
{
    // freopen("input.txt", "r", stdin);
    // freopen("output.txt", "w", stdout);
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cin >>q >>t;
    while( q-- )
    {
        int type, l, r, k, id;
        cin >>type;
        if( type == 1 )
        {
            cin >>l >>r;
            l = (l ^ (t * lans));
            r = (r ^ (t * lans));
            if( l > r )
                swap(l, r);
            ++id1;
            mp[id1] = {l, r};
            s.insert({l, r});
            continue;
        }
        else if( type == 2 )
        {
            cin >>id;
            l = mp[id].F;
            r = mp[id].S;
            s.erase(s.find({l, r}));
            continue;
        }
        else
        {
            cin >>l >>r >>k;
            l = (l ^ (t * lans));
            r = (r ^ (t * lans));
            if( l > r )
                swap(l, r);
            int res = 0;
            for( auto [l1, r1]: s )
            {
                if( l1 > r || l > r1 )
                    continue;
                int l2 = max(l, l1);
                int r2 = min(r, r1);
                res += (r2 - l2 + 1 >= k);
            }
            cout <<res <<nl;
            lans = res;
            continue;
        }
    }
}
#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...