Submission #00059


ソースコード

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
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
#include <bits/stdc++.h>
using namespace std;
#define all(v) v.begin(), v.end()
#define rall(v) v.rbegin(), v.rend()
#define ll long long
#define next_per(v) next_permutation(v.begin(), v.end())
#define prev_per(v) prev_permutation(v.begin(), v.end())
#define fixed(v) fixed << setprecision(v)
#define total(n) ((n) * ((n) + 1) / 2)
#define combi(n) ((n) * ((n)-1) / 2) // n個の数の組み合わせ数
#define lcm(a, b) ((a) * (b) / __gcd(a, b))
// binery_search(all(v),key) = keyがあるかないかをboolで返す
// lower_bound(all(v),key) = key以上のイテレーターを返す(一番左)
// upper_bound(all(v),key) = keyより大きい要素のイテレーターを返す
// 最小値=max_element(v.begin(),v.end());
// 最大値=min_element(v.begin(),v.end());
template <class x>
x rng_total(x l, x r)
{ // l ~ rまでの数の総和
return ((l + r) * (r - l + 1) / 2);
}
template <class x>
x rng_combi(x l, x r)
{ //「l個の物からr個取った組み合わせ数」
x ans = 1;
l++;
for (x i = 1; i <= r; i++)
{
x sub = l - i;
ans *= sub;
ans /= i;
}
return (ans);
}
template <class x>
x dig_sum(x num)
{ // 各桁の総和
x ans = 0;
while (num > 0)
{
ans += num % 10;
num /= 10;
}
return (ans);
}
// [struct]--------------------------------------
// <UnionFind>
struct UnionFind {
// 親の要素とサイズを管理する変数
int group_cnt;
vector<int> parent, size;
// 変数の初期化
UnionFind(int n) {
parent.resize(n, -1);
size.resize(n, 1);
group_cnt = n;
}
// x の根を求める
int root(int x) {
// x が根のとき
if(parent[x] == -1) return x;
// 経路圧縮
return parent[x] = root(parent[x]);
}
// x と y の根が同じか
bool isSame(int x, int y) {
return root(x) == root(y);
}
// x と y のグループを併合する
bool unite(int x, int y) {
// x と y の根を取得
int rootX = root(x);
int rootY = root(y);
// x と y が同じグループのときは何もしない
if (rootX == rootY) return(false);
// union by size( y のサイズが小さくなるように調整 )
if (size[rootX] < size[rootY]) swap(rootX, rootY);
// y の親を x にする
parent[rootY] = rootX;
// 連結成分の個数を一つ減らす
group_cnt--;
// x のサイズに y のサイズを足す
size[rootX] += size[rootY];
return(true);
}
};
//-----------------------------------------------------
int main()
{
cin.tie(nullptr);
ios_base::sync_with_stdio(false);
//-----------------------------------------------------
ll a, b;
cin >> a >> b;
ll n;
cin >> n;
vector<ll> imos(1010, 0);
for (int i = 0; i < n; i++) {
ll s, f;
cin >> s >> f;
imos[s] += 1;
imos[f] -= 1;
}
for (int i = 1; i <= 1001; i++) {
imos[i] += imos[i - 1];
}
for (int i = a; i < b; i++) {
if (imos[i] > 0) {
cout << 1 << endl;
return(0);
}
}
cout << 0 << endl;
return(0);
}
// sishou

ステータス

項目 データ
問題 0004 - エルの予約
ユーザー名 ei2134
投稿日時 2023-07-31 09:52:31
言語 C++17
状態 Accepted
得点 5
ソースコード長 3446 Byte
最大実行時間 35 ms
最大メモリ使用量 696 KB

セット

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

テストケース

ファイル名 状態 実行時間 メモリ使用量 #
in1.txt AC 31 ms 604 KB
1
in2.txt AC 23 ms 560 KB
1
in3.txt AC 17 ms 620 KB
1
in4.txt AC 15 ms 664 KB
1
in5.txt AC 14 ms 608 KB
1
in6.txt AC 24 ms 680 KB
1
in7.txt AC 25 ms 624 KB
1
in8.txt AC 23 ms 696 KB
1
in9.txt AC 20 ms 648 KB
1
in10.txt AC 18 ms 680 KB
1
in11.txt AC 20 ms 628 KB
1
in12.txt AC 23 ms 576 KB
1
in13.txt AC 24 ms 400 KB
1
in14.txt AC 15 ms 608 KB
1
in15.txt AC 22 ms 684 KB
1
in16.txt AC 21 ms 504 KB
1
in17.txt AC 21 ms 576 KB
1
in18.txt AC 21 ms 528 KB
1
in19.txt AC 35 ms 608 KB
1
in20.txt AC 22 ms 632 KB
1
in21.txt AC 19 ms 580 KB
1
in22.txt AC 21 ms 656 KB
1
in23.txt AC 25 ms 604 KB
1
in24.txt AC 17 ms 556 KB
1
in25.txt AC 24 ms 636 KB
1
in26.txt AC 19 ms 584 KB
1
in27.txt AC 21 ms 528 KB
1
in28.txt AC 15 ms 600 KB
1
in29.txt AC 24 ms 676 KB
1
in30.txt AC 15 ms 692 KB
1
in31.txt AC 17 ms 636 KB
1
in32.txt AC 24 ms 588 KB
1