#ifdef ONLINE_JUDGE
#pragma GCC optimize("Ofast,no-stack-protector,unroll-loops,fast-math,O3")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
#endif
#include <bits/stdc++.h>
#define speed \
ios_base::sync_with_stdio(0); \
cin.tie(0); \
cout.tie(0);
#define precision \
cout.precision(30); \
cerr.precision(10);
#define ll long long
#define ld long double
#define pb(x) push_back(x)
#define sz(x) (int)x.size()
#define mp(x, y) make_pair(x, y)
#define all(x) x.begin(), x.end()
#define pc(x) __builtin_popcount(x)
#define pcll(x) __builtin_popcountll(x)
#define F first
#define S second
using namespace std;
mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());
void ioi(string name) {
freopen((name + ".in").c_str(), "r", stdin);
freopen((name + ".out").c_str(), "w", stdout);
}
const int bl = 900;
int n, m, g, t, sz, lastans, a[2][200005], b[2][200005], c[2][200005],
pos[200005];
pair<int, int> d[bl + 5], e[200005];
inline int kek(int l, int r, int x) {
int new_ans = 0;
#pragma GCC ivdep
for (int i = 1; i <= sz; i++)
new_ans +=
c[0][d[i].S] <= r - x + 1 && c[1][d[i].S] >= l + x - 1 && x <= d[i].F;
int p = lower_bound(e + 1, e + m + 1, mp(x, 0)) - e;
p = m - p + 1;
for (int i = 1; i <= p; i++)
new_ans += b[0][i] <= r - x + 1 && b[1][i] >= l + x - 1;
return new_ans;
}
void mrg() {
pair<int, int> tmp[sz + m + 5];
merge(e + 1, e + m + 1, d + 1, d + sz + 1, tmp + 1);
m += sz;
sz = 0;
for (int i = 1; i <= m; i++) e[i] = tmp[i];
}
void bld() {
sort(d + 1, d + sz + 1);
mrg();
for (int i = 1; i <= m; i++)
b[0][m - i + 1] = c[0][e[i].S], b[1][m - i + 1] = c[1][e[i].S],
pos[e[i].S] = m - i + 1;
}
int main() {
speed;
precision;
// code
cin >> n >> t;
for (int i = 1; i <= n; i++) {
int type, l, r, x;
cin >> type;
if (type == 1) {
cin >> l >> r;
l ^= t * lastans;
r ^= t * lastans;
if (l > r) swap(l, r);
++g;
c[0][g] = l;
c[1][g] = r;
d[++sz] = mp(r - l + 1, g);
}
if (type == 2) {
cin >> x;
c[0][x] = 1e9;
c[1][x] = -1e9;
b[0][pos[x]] = 1e9;
b[1][pos[x]] = -1e9;
}
if (type == 3) {
cin >> l >> r >> x;
l ^= t * lastans;
r ^= t * lastans;
if (l > r) swap(l, r);
cout << (lastans = kek(l, r, x)) << "\n";
}
if (bl <= sz) bld();
}
// endl
#ifndef ONLINE_JUDGE
cerr << "\nTime elapsed: " << 1.0 * clock() / CLOCKS_PER_SEC << " s.\n";
#endif
return 0;
}
Compilation message
segments.cpp: In function 'void ioi(std::string)':
segments.cpp:26:10: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
26 | freopen((name + ".in").c_str(), "r", stdin);
| ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
segments.cpp:27:10: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
27 | freopen((name + ".out").c_str(), "w", stdout);
| ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
340 KB |
Output is correct |
2 |
Correct |
1 ms |
292 KB |
Output is correct |
3 |
Correct |
4 ms |
468 KB |
Output is correct |
4 |
Correct |
4 ms |
468 KB |
Output is correct |
5 |
Correct |
11 ms |
596 KB |
Output is correct |
6 |
Correct |
10 ms |
588 KB |
Output is correct |
7 |
Correct |
8 ms |
468 KB |
Output is correct |
8 |
Correct |
7 ms |
468 KB |
Output is correct |
9 |
Correct |
8 ms |
468 KB |
Output is correct |
10 |
Correct |
4 ms |
588 KB |
Output is correct |
11 |
Correct |
16 ms |
560 KB |
Output is correct |
12 |
Correct |
17 ms |
468 KB |
Output is correct |
13 |
Correct |
5 ms |
592 KB |
Output is correct |
14 |
Correct |
8 ms |
452 KB |
Output is correct |
15 |
Correct |
3 ms |
468 KB |
Output is correct |
16 |
Correct |
3 ms |
468 KB |
Output is correct |
17 |
Correct |
8 ms |
468 KB |
Output is correct |
18 |
Correct |
5 ms |
596 KB |
Output is correct |
19 |
Correct |
8 ms |
472 KB |
Output is correct |
20 |
Correct |
9 ms |
532 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
3445 ms |
5236 KB |
Output is correct |
2 |
Correct |
3363 ms |
5048 KB |
Output is correct |
3 |
Correct |
3434 ms |
5128 KB |
Output is correct |
4 |
Correct |
3280 ms |
5296 KB |
Output is correct |
5 |
Correct |
764 ms |
5956 KB |
Output is correct |
6 |
Correct |
435 ms |
6132 KB |
Output is correct |
7 |
Correct |
3458 ms |
5056 KB |
Output is correct |
8 |
Correct |
3419 ms |
5256 KB |
Output is correct |
9 |
Correct |
3400 ms |
5180 KB |
Output is correct |
10 |
Correct |
2242 ms |
4328 KB |
Output is correct |
11 |
Correct |
2674 ms |
4584 KB |
Output is correct |
12 |
Correct |
2760 ms |
5480 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
451 ms |
3428 KB |
Output is correct |
2 |
Correct |
463 ms |
3388 KB |
Output is correct |
3 |
Correct |
530 ms |
3480 KB |
Output is correct |
4 |
Correct |
420 ms |
3424 KB |
Output is correct |
5 |
Correct |
4107 ms |
5520 KB |
Output is correct |
6 |
Correct |
4733 ms |
5200 KB |
Output is correct |
7 |
Correct |
4534 ms |
5236 KB |
Output is correct |
8 |
Correct |
1091 ms |
5936 KB |
Output is correct |
9 |
Correct |
702 ms |
5800 KB |
Output is correct |
10 |
Correct |
1961 ms |
5296 KB |
Output is correct |
11 |
Correct |
1085 ms |
3548 KB |
Output is correct |
12 |
Correct |
1895 ms |
5316 KB |
Output is correct |
13 |
Correct |
1770 ms |
4972 KB |
Output is correct |
14 |
Correct |
2970 ms |
4396 KB |
Output is correct |
15 |
Correct |
3075 ms |
4176 KB |
Output is correct |
16 |
Correct |
2884 ms |
3928 KB |
Output is correct |
17 |
Execution timed out |
5028 ms |
4712 KB |
Time limit exceeded |
18 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
300 ms |
3584 KB |
Output is correct |
2 |
Correct |
307 ms |
3608 KB |
Output is correct |
3 |
Correct |
306 ms |
3572 KB |
Output is correct |
4 |
Correct |
313 ms |
3552 KB |
Output is correct |
5 |
Correct |
2348 ms |
5652 KB |
Output is correct |
6 |
Correct |
1615 ms |
4416 KB |
Output is correct |
7 |
Correct |
1806 ms |
5828 KB |
Output is correct |
8 |
Correct |
2331 ms |
4500 KB |
Output is correct |
9 |
Correct |
1985 ms |
4644 KB |
Output is correct |
10 |
Correct |
1197 ms |
5472 KB |
Output is correct |
11 |
Correct |
1601 ms |
4056 KB |
Output is correct |
12 |
Correct |
267 ms |
5964 KB |
Output is correct |
13 |
Correct |
1630 ms |
5160 KB |
Output is correct |
14 |
Correct |
2515 ms |
4476 KB |
Output is correct |
15 |
Correct |
478 ms |
5984 KB |
Output is correct |
16 |
Correct |
1451 ms |
5244 KB |
Output is correct |
17 |
Correct |
3249 ms |
5344 KB |
Output is correct |
18 |
Correct |
3265 ms |
5088 KB |
Output is correct |
19 |
Correct |
3303 ms |
5124 KB |
Output is correct |
20 |
Correct |
3279 ms |
5364 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
340 KB |
Output is correct |
2 |
Correct |
1 ms |
292 KB |
Output is correct |
3 |
Correct |
4 ms |
468 KB |
Output is correct |
4 |
Correct |
4 ms |
468 KB |
Output is correct |
5 |
Correct |
11 ms |
596 KB |
Output is correct |
6 |
Correct |
10 ms |
588 KB |
Output is correct |
7 |
Correct |
8 ms |
468 KB |
Output is correct |
8 |
Correct |
7 ms |
468 KB |
Output is correct |
9 |
Correct |
8 ms |
468 KB |
Output is correct |
10 |
Correct |
4 ms |
588 KB |
Output is correct |
11 |
Correct |
16 ms |
560 KB |
Output is correct |
12 |
Correct |
17 ms |
468 KB |
Output is correct |
13 |
Correct |
5 ms |
592 KB |
Output is correct |
14 |
Correct |
8 ms |
452 KB |
Output is correct |
15 |
Correct |
3 ms |
468 KB |
Output is correct |
16 |
Correct |
3 ms |
468 KB |
Output is correct |
17 |
Correct |
8 ms |
468 KB |
Output is correct |
18 |
Correct |
5 ms |
596 KB |
Output is correct |
19 |
Correct |
8 ms |
472 KB |
Output is correct |
20 |
Correct |
9 ms |
532 KB |
Output is correct |
21 |
Correct |
3445 ms |
5236 KB |
Output is correct |
22 |
Correct |
3363 ms |
5048 KB |
Output is correct |
23 |
Correct |
3434 ms |
5128 KB |
Output is correct |
24 |
Correct |
3280 ms |
5296 KB |
Output is correct |
25 |
Correct |
764 ms |
5956 KB |
Output is correct |
26 |
Correct |
435 ms |
6132 KB |
Output is correct |
27 |
Correct |
3458 ms |
5056 KB |
Output is correct |
28 |
Correct |
3419 ms |
5256 KB |
Output is correct |
29 |
Correct |
3400 ms |
5180 KB |
Output is correct |
30 |
Correct |
2242 ms |
4328 KB |
Output is correct |
31 |
Correct |
2674 ms |
4584 KB |
Output is correct |
32 |
Correct |
2760 ms |
5480 KB |
Output is correct |
33 |
Correct |
300 ms |
3584 KB |
Output is correct |
34 |
Correct |
307 ms |
3608 KB |
Output is correct |
35 |
Correct |
306 ms |
3572 KB |
Output is correct |
36 |
Correct |
313 ms |
3552 KB |
Output is correct |
37 |
Correct |
2348 ms |
5652 KB |
Output is correct |
38 |
Correct |
1615 ms |
4416 KB |
Output is correct |
39 |
Correct |
1806 ms |
5828 KB |
Output is correct |
40 |
Correct |
2331 ms |
4500 KB |
Output is correct |
41 |
Correct |
1985 ms |
4644 KB |
Output is correct |
42 |
Correct |
1197 ms |
5472 KB |
Output is correct |
43 |
Correct |
1601 ms |
4056 KB |
Output is correct |
44 |
Correct |
267 ms |
5964 KB |
Output is correct |
45 |
Correct |
1630 ms |
5160 KB |
Output is correct |
46 |
Correct |
2515 ms |
4476 KB |
Output is correct |
47 |
Correct |
478 ms |
5984 KB |
Output is correct |
48 |
Correct |
1451 ms |
5244 KB |
Output is correct |
49 |
Correct |
3249 ms |
5344 KB |
Output is correct |
50 |
Correct |
3265 ms |
5088 KB |
Output is correct |
51 |
Correct |
3303 ms |
5124 KB |
Output is correct |
52 |
Correct |
3279 ms |
5364 KB |
Output is correct |
53 |
Correct |
337 ms |
3660 KB |
Output is correct |
54 |
Correct |
324 ms |
3716 KB |
Output is correct |
55 |
Correct |
308 ms |
3580 KB |
Output is correct |
56 |
Correct |
318 ms |
3596 KB |
Output is correct |
57 |
Correct |
3132 ms |
4864 KB |
Output is correct |
58 |
Correct |
1120 ms |
4144 KB |
Output is correct |
59 |
Correct |
3098 ms |
5440 KB |
Output is correct |
60 |
Correct |
965 ms |
4052 KB |
Output is correct |
61 |
Correct |
1539 ms |
5200 KB |
Output is correct |
62 |
Correct |
635 ms |
5928 KB |
Output is correct |
63 |
Correct |
364 ms |
5904 KB |
Output is correct |
64 |
Correct |
589 ms |
5696 KB |
Output is correct |
65 |
Correct |
2553 ms |
4272 KB |
Output is correct |
66 |
Correct |
2397 ms |
4192 KB |
Output is correct |
67 |
Correct |
1422 ms |
5308 KB |
Output is correct |
68 |
Correct |
1990 ms |
4900 KB |
Output is correct |
69 |
Correct |
3312 ms |
5200 KB |
Output is correct |
70 |
Correct |
3282 ms |
5056 KB |
Output is correct |
71 |
Correct |
3297 ms |
5048 KB |
Output is correct |
72 |
Correct |
3284 ms |
5172 KB |
Output is correct |
73 |
Correct |
2029 ms |
4256 KB |
Output is correct |
74 |
Correct |
1792 ms |
4944 KB |
Output is correct |
75 |
Correct |
151 ms |
6016 KB |
Output is correct |
76 |
Correct |
368 ms |
5996 KB |
Output is correct |
77 |
Correct |
313 ms |
3664 KB |
Output is correct |
78 |
Correct |
311 ms |
3640 KB |
Output is correct |
79 |
Correct |
316 ms |
3624 KB |
Output is correct |
80 |
Correct |
310 ms |
3636 KB |
Output is correct |
81 |
Correct |
1897 ms |
4812 KB |
Output is correct |
82 |
Correct |
2070 ms |
4276 KB |
Output is correct |
83 |
Correct |
1555 ms |
3956 KB |
Output is correct |
84 |
Correct |
1831 ms |
4944 KB |
Output is correct |
85 |
Correct |
1422 ms |
5104 KB |
Output is correct |
86 |
Correct |
1315 ms |
5324 KB |
Output is correct |
87 |
Correct |
2493 ms |
4436 KB |
Output is correct |
88 |
Correct |
2293 ms |
4068 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
340 KB |
Output is correct |
2 |
Correct |
1 ms |
292 KB |
Output is correct |
3 |
Correct |
4 ms |
468 KB |
Output is correct |
4 |
Correct |
4 ms |
468 KB |
Output is correct |
5 |
Correct |
11 ms |
596 KB |
Output is correct |
6 |
Correct |
10 ms |
588 KB |
Output is correct |
7 |
Correct |
8 ms |
468 KB |
Output is correct |
8 |
Correct |
7 ms |
468 KB |
Output is correct |
9 |
Correct |
8 ms |
468 KB |
Output is correct |
10 |
Correct |
4 ms |
588 KB |
Output is correct |
11 |
Correct |
16 ms |
560 KB |
Output is correct |
12 |
Correct |
17 ms |
468 KB |
Output is correct |
13 |
Correct |
5 ms |
592 KB |
Output is correct |
14 |
Correct |
8 ms |
452 KB |
Output is correct |
15 |
Correct |
3 ms |
468 KB |
Output is correct |
16 |
Correct |
3 ms |
468 KB |
Output is correct |
17 |
Correct |
8 ms |
468 KB |
Output is correct |
18 |
Correct |
5 ms |
596 KB |
Output is correct |
19 |
Correct |
8 ms |
472 KB |
Output is correct |
20 |
Correct |
9 ms |
532 KB |
Output is correct |
21 |
Correct |
3445 ms |
5236 KB |
Output is correct |
22 |
Correct |
3363 ms |
5048 KB |
Output is correct |
23 |
Correct |
3434 ms |
5128 KB |
Output is correct |
24 |
Correct |
3280 ms |
5296 KB |
Output is correct |
25 |
Correct |
764 ms |
5956 KB |
Output is correct |
26 |
Correct |
435 ms |
6132 KB |
Output is correct |
27 |
Correct |
3458 ms |
5056 KB |
Output is correct |
28 |
Correct |
3419 ms |
5256 KB |
Output is correct |
29 |
Correct |
3400 ms |
5180 KB |
Output is correct |
30 |
Correct |
2242 ms |
4328 KB |
Output is correct |
31 |
Correct |
2674 ms |
4584 KB |
Output is correct |
32 |
Correct |
2760 ms |
5480 KB |
Output is correct |
33 |
Correct |
451 ms |
3428 KB |
Output is correct |
34 |
Correct |
463 ms |
3388 KB |
Output is correct |
35 |
Correct |
530 ms |
3480 KB |
Output is correct |
36 |
Correct |
420 ms |
3424 KB |
Output is correct |
37 |
Correct |
4107 ms |
5520 KB |
Output is correct |
38 |
Correct |
4733 ms |
5200 KB |
Output is correct |
39 |
Correct |
4534 ms |
5236 KB |
Output is correct |
40 |
Correct |
1091 ms |
5936 KB |
Output is correct |
41 |
Correct |
702 ms |
5800 KB |
Output is correct |
42 |
Correct |
1961 ms |
5296 KB |
Output is correct |
43 |
Correct |
1085 ms |
3548 KB |
Output is correct |
44 |
Correct |
1895 ms |
5316 KB |
Output is correct |
45 |
Correct |
1770 ms |
4972 KB |
Output is correct |
46 |
Correct |
2970 ms |
4396 KB |
Output is correct |
47 |
Correct |
3075 ms |
4176 KB |
Output is correct |
48 |
Correct |
2884 ms |
3928 KB |
Output is correct |
49 |
Execution timed out |
5028 ms |
4712 KB |
Time limit exceeded |
50 |
Halted |
0 ms |
0 KB |
- |