Submission #77426
ソースコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 | #include <bits/stdc++.h> using namespace std; template < typename T, typename F > struct SegmentTree { int n, sz; vector< T > seg; const F f; const T ti; SegmentTree() = default ; explicit SegmentTree( int n, const F f, const T &ti) : n(n), f(f), ti(ti) { sz = 1; while (sz < n) sz <<= 1; seg.assign(2 * sz, ti); } explicit SegmentTree( const vector< T > &v, const F f, const T &ti) : SegmentTree(( int ) v.size(), f, ti) { build(v); } void build( const vector< T > &v) { assert (n == ( int ) v.size()); for ( int k = 0; k < n; k++) seg[k + sz] = v[k]; for ( int k = sz - 1; k > 0; k--) { seg[k] = f(seg[2 * k + 0], seg[2 * k + 1]); } } void update( int k, const T &x) { k += sz; seg[k] = x; while (k >>= 1) { seg[k] = f(seg[2 * k + 0], seg[2 * k + 1]); } } T get( int k) const { return seg[k + sz]; } T operator[]( const int &k) const { return get(k); } void apply( int k, const T &x) { k += sz; seg[k] = f(seg[k], x); while (k >>= 1) { seg[k] = f(seg[2 * k + 0], seg[2 * k + 1]); } } T query( int l, int r) const { T L = ti, R = ti; for (l += sz, r += sz; l < r; l >>= 1, r >>= 1) { if (l & 1) L = f(L, seg[l++]); if (r & 1) R = f(seg[--r], R); } return f(L, R); } T query() const { return seg[1]; } }; template < typename T, typename F > SegmentTree< T, F > get_segment_tree( int N, const F &f, const T &ti) { return SegmentTree{N, f, ti}; } template < typename T, typename F > SegmentTree< T, F > get_segment_tree( const vector< T > &v, const F &f, const T &ti) { return SegmentTree{v, f, ti}; } int main(){ cin.tie(nullptr); ios_base::sync_with_stdio( false ); int n, q; cin >> n >> q; auto seg = get_segment_tree(n, []( int x, int y) { return max(x, y); }, 0); int res = 0; set< int > s; for ( int i = 0; i < q; ++i) { int com, l, r; cin >> com >> l >> r; --l, --r; if (com == 1) { if (!seg.query(l, r + 1)) { seg.update(l, 1); s.insert(l); res++; } } else { auto itr = s.lower_bound(l); while (itr != s.end() && *itr <= r) { seg.update(*itr, 0); itr = s.erase(itr); res--; } } cout << res << '\n' ; } return (0); } |
ステータス
項目 | データ |
---|---|
問題 | 1724 - Machines |
ユーザー名 | ei1903 |
投稿日時 | 2023-12-21 20:32:26 |
言語 | C++17 |
状態 | Accepted |
得点 | 5 |
ソースコード長 | 2733 Byte |
最大実行時間 | 170 ms |
最大メモリ使用量 | 33376 KB |
セット
セット | 得点 | Cases | |
---|---|---|---|
1 | ALL | 5 / 5 | * |
テストケース
ファイル名 | 状態 | 実行時間 | メモリ使用量 | # |
---|---|---|---|---|
00_sample_00.in | AC | 24 ms | 604 KB |
1
|
01_small_00.in | AC | 15 ms | 428 KB |
1
|
01_small_01.in | AC | 21 ms | 516 KB |
1
|
01_small_02.in | AC | 27 ms | 476 KB |
1
|
02_corner_minimum_00.in | AC | 24 ms | 688 KB |
1
|
02_corner_minimum_01.in | AC | 22 ms | 636 KB |
1
|
03_general_00.in | AC | 29 ms | 596 KB |
1
|
03_general_01.in | AC | 24 ms | 416 KB |
1
|
04_random_00.in | AC | 27 ms | 500 KB |
1
|
04_random_01.in | AC | 19 ms | 452 KB |
1
|
04_random_02.in | AC | 19 ms | 540 KB |
1
|
04_random_03.in | AC | 26 ms | 496 KB |
1
|
05_large_00.in | AC | 20 ms | 572 KB |
1
|
05_large_01.in | AC | 26 ms | 520 KB |
1
|
05_large_02.in | AC | 18 ms | 588 KB |
1
|
05_large_03.in | AC | 23 ms | 724 KB |
1
|
06_corner_maximum_00.in | AC | 45 ms | 1816 KB |
1
|
06_corner_maximum_01.in | AC | 96 ms | 3300 KB |
1
|
06_corner_maximum_02.in | AC | 110 ms | 5932 KB |
1
|
07_corner_critical_00.in | AC | 136 ms | 21872 KB |
1
|
07_corner_critical_01.in | AC | 138 ms | 23752 KB |
1
|
07_corner_critical_02.in | AC | 112 ms | 16412 KB |
1
|
07_corner_critical_03.in | AC | 96 ms | 18452 KB |
1
|
07_corner_critical_04.in | AC | 123 ms | 25104 KB |
1
|
07_corner_critical_05.in | AC | 170 ms | 26940 KB |
1
|
07_corner_critical_06.in | AC | 170 ms | 33376 KB |
1
|
07_corner_critical_07.in | AC | 95 ms | 20028 KB |
1
|
07_corner_critical_08.in | AC | 112 ms | 21000 KB |
1
|
07_corner_critical_09.in | AC | 118 ms | 21708 KB |
1
|
07_corner_critical_10.in | AC | 79 ms | 22288 KB |
1
|
07_corner_critical_11.in | AC | 99 ms | 22868 KB |
1
|
07_corner_critical_12.in | AC | 153 ms | 29080 KB |
1
|
07_corner_critical_13.in | AC | 72 ms | 25216 KB |
1
|
07_corner_critical_14.in | AC | 67 ms | 21700 KB |
1
|