Submission #495846

#TimeUsernameProblemLanguageResultExecution timeMemory
495846kinglineSegments (IZhO18_segments)C++17
22 / 100
4614 ms3904 KiB
#include <bits/stdc++.h>
#define file(data) freopen(data".in", "r", stdin); freopen(data".out", "w", stdout);
#define pb push_back
#define all(data) data.begin(), data.end()
#define endl '\n'
#define ll long long
//#define int long long
#define pii pair < int, int >

using namespace std;

const int M = 4e5 + 5;
//const int mod = 1e9 + 7;

int n, t;

main() {
    //file("pieaters");
    /*ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);*/
    cin >> n >> t;
    if(n <= 5000) {
        int id = 0, last = 0, cs = 0;
        multiset < pair < int, pii > > st;
        while(n--) {
            int tp, a, b, k;
            cin >> tp;
            if(tp == 1) {
                cin >> a >> b;
                a ^= (t * last);
                b ^= (t * last);
                if(a > b) swap(a, b);
                st.insert({++id, {a, b}});
            } else if(tp == 2) {
                cin >> k;
                st.erase(*st.lower_bound({k, {0, 0}}));
            } else {
                cin >> a >> b >> k;
                a = a ^ (last * t);
                b = b ^ (last * t);
                if(a > b) swap(a, b);
                int ans = 0;
                //cout << "Case " << ++cs << ": " << a << " " << b << endl;
                for(multiset < pair < int, pii > >::iterator it = st.begin(); it != st.end(); it++) {
                    pii z = (*it).second;
                    //cout << z.first << " " << z.second << endl;
                    if(min(z.second, b) - max(z.first, a) + 1 >= k) {
                        ans++;
                    }
                }
                cout << ans << endl;
                last = ans;
            }
        }
    } else {
        int tp, l, r, k;
        vector < pair < int, int > > v;
        while(n--) {
            cin >> tp >> l >> r;
            if(l > r) swap(l, r);
            if(tp == 3) break;
            v.pb({l, r});
        }
        cin >> k;
        int last = 0;
        for(int i = 0; i < v.size(); i++) {
            if(min(v[i].second, r) - max(v[i].first, l) + 1 >= k) {
                last++;
            }
        }
        cout << last << endl;
        while(n--) {
            cin >> tp >> l >> r >> k;
            l ^= (t * last);
            r ^= (t * last);
            if(l > r) swap(l, r);
            last = 0;
            for(int i = 0; i < v.size(); i++) {
                if(min(v[i].second, r) - max(v[i].first, l) + 1 >= k) {
                    last++;
                }
            }
            cout << last << endl;
        }
    }
}






Compilation message (stderr)

segments.cpp:17:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   17 | main() {
      | ^~~~
segments.cpp: In function 'int main()':
segments.cpp:24:31: warning: unused variable 'cs' [-Wunused-variable]
   24 |         int id = 0, last = 0, cs = 0;
      |                               ^~
segments.cpp:67:26: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   67 |         for(int i = 0; i < v.size(); i++) {
      |                        ~~^~~~~~~~~~
segments.cpp:79:30: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   79 |             for(int i = 0; i < v.size(); i++) {
      |                            ~~^~~~~~~~~~
#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...