Submission #77424


ソースコード

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
#include <bits/stdc++.h>
using namespace std;
long long N, Q;
const long long INF = LONG_LONG_MAX;
struct LazySegmentTree {
private:
long long n;
vector<long long> node, lazy;
vector<bool> lazyFlag;
public:
LazySegmentTree(vector<long long> v) {
long long sz = (long long)v.size();
n = 1; while(n < sz) n *= 2;
node.resize(2*n-1);
lazy.resize(2*n-1, 0);
lazyFlag.resize(2*n-1, false);
for(long long i=0; i<sz; i++) node[i+n-1] = v[i];
for(long long i=n-2; i>=0; i--) node[i] = (node[i*2+1]+node[i*2+2]);
}
void lazyEvaluate(long long k, long long l, long long r) {
if(lazyFlag[k]) {
node[k] = lazy[k];
if(r - l > 1) {
lazy[k*2+1] = lazy[k*2+2] = lazy[k];
lazyFlag[k*2+1] = lazyFlag[k*2+2] = true;
}
lazyFlag[k] = false;
}
}
void update(long long a, long long b, long long x, long long k=0, long long l=0, long long r=-1) {
if(r < 0) r = n;
lazyEvaluate(k, l, r);
if(b <= l || r <= a) return;
if(a <= l && r <= b) {
lazy[k] = x;
lazyFlag[k] = true;
lazyEvaluate(k, l, r);
}
else {
update(a, b, x, 2*k+1, l, (l+r)/2);
update(a, b, x, 2*k+2, (l+r)/2, r);
node[k] = (node[2*k+1]+node[2*k+2]);
}
}
long long find(long long a, long long b, long long k=0, long long l=0, long long r=-1) {
if(r < 0) r = n;
lazyEvaluate(k, l, r);
if(b <= l || r <= a) return 0;
if(a <= l && r <= b) return node[k];
long long vl = find(a, b, 2*k+1, l, (l+r)/2);
long long vr = find(a, b, 2*k+2, (l+r)/2, r);
return (vl+vr);
}
};
int main() {
cin >> N >> Q;
LazySegmentTree seg( vector<long long>(N+1, 0) );
for(long long i=0; i<Q; i++) {
long long query; cin >> query;
if(query == 1) {
long long s, t, x; cin >> s >> t ;
//seg.update(s, t+1, x);
if(seg.find(s,t+1)==0){
seg.update(s,s+1,1);
}
}else {
long long s, t; cin >> s >> t;
seg.update(s,t+1,0);
}
cout<<seg.find(1,N+1)<<"\n";
}
return 0;
}

ステータス

項目 データ
問題 1724 - Machines
ユーザー名 ei2326
投稿日時 2023-12-21 17:07:14
言語 C++17
状態 Accepted
得点 5
ソースコード長 2385 Byte
最大実行時間 1006 ms
最大メモリ使用量 39596 KB

セット

セット 得点 Cases
1 ALL 5 / 5 *

テストケース

ファイル名 状態 実行時間 メモリ使用量 #
00_sample_00.in AC 31 ms 604 KB
1
01_small_00.in AC 19 ms 452 KB
1
01_small_01.in AC 27 ms 552 KB
1
01_small_02.in AC 21 ms 524 KB
1
02_corner_minimum_00.in AC 26 ms 496 KB
1
02_corner_minimum_01.in AC 18 ms 464 KB
1
03_general_00.in AC 24 ms 560 KB
1
03_general_01.in AC 19 ms 400 KB
1
04_random_00.in AC 16 ms 496 KB
1
04_random_01.in AC 16 ms 588 KB
1
04_random_02.in AC 24 ms 552 KB
1
04_random_03.in AC 21 ms 520 KB
1
05_large_00.in AC 21 ms 744 KB
1
05_large_01.in AC 18 ms 692 KB
1
05_large_02.in AC 29 ms 880 KB
1
05_large_03.in AC 56 ms 1188 KB
1
06_corner_maximum_00.in AC 318 ms 5424 KB
1
06_corner_maximum_01.in AC 638 ms 10584 KB
1
06_corner_maximum_02.in AC 1006 ms 20184 KB
1
07_corner_critical_00.in AC 875 ms 20748 KB
1
07_corner_critical_01.in AC 888 ms 22584 KB
1
07_corner_critical_02.in AC 880 ms 24424 KB
1
07_corner_critical_03.in AC 825 ms 26656 KB
1
07_corner_critical_04.in AC 844 ms 28496 KB
1
07_corner_critical_05.in AC 886 ms 30344 KB
1
07_corner_critical_06.in AC 909 ms 32320 KB
1
07_corner_critical_07.in AC 839 ms 34288 KB
1
07_corner_critical_08.in AC 884 ms 34852 KB
1
07_corner_critical_09.in AC 871 ms 35676 KB
1
07_corner_critical_10.in AC 813 ms 36628 KB
1
07_corner_critical_11.in AC 871 ms 37196 KB
1
07_corner_critical_12.in AC 904 ms 37884 KB
1
07_corner_critical_13.in AC 1006 ms 39596 KB
1
07_corner_critical_14.in AC 654 ms 21860 KB
1