回答編集履歴

3

修正

2018/02/12 01:01

投稿

episteme
episteme

スコア16612

test CHANGED
@@ -36,7 +36,7 @@
36
36
 
37
37
 
38
38
 
39
- bool in_range(const range& x, const range& y) {
39
+ bool out_range(const range& x, const range& y) {
40
40
 
41
41
  if ( is_valid(x) && is_valid(y) ) {
42
42
 
@@ -70,7 +70,7 @@
70
70
 
71
71
  for ( const range& y : ys ) {
72
72
 
73
- cout << x << " : " << y << " ... " << boolalpha << in_range(x,y) << endl;
73
+ cout << x << " : " << y << " ... " << boolalpha << out_range(x,y) << endl;
74
74
 
75
75
  }
76
76
 

2

追記

2018/02/12 01:01

投稿

episteme
episteme

スコア16612

test CHANGED
@@ -5,3 +5,93 @@
5
5
 
6
6
 
7
7
  ってことは、 ①end < ②start または ②end < ①start なら条件を満たしそう。
8
+
9
+
10
+
11
+ ```C++
12
+
13
+ #include <iostream>
14
+
15
+ #include <utility>
16
+
17
+
18
+
19
+ typedef std::pair<int,int> range;
20
+
21
+
22
+
23
+ std::ostream& operator<<(std::ostream& stream, const range& r) {
24
+
25
+ return stream << '(' << r.first << ',' << r.second << ")";
26
+
27
+ }
28
+
29
+
30
+
31
+ bool is_valid(const range& r) {
32
+
33
+ return r.first <= r.second;
34
+
35
+ }
36
+
37
+
38
+
39
+ bool in_range(const range& x, const range& y) {
40
+
41
+ if ( is_valid(x) && is_valid(y) ) {
42
+
43
+ if ( x.second < y.first ) return true;
44
+
45
+ if ( y.second < x.first ) return true;
46
+
47
+ }
48
+
49
+ return false;
50
+
51
+ }
52
+
53
+
54
+
55
+
56
+
57
+ int main(){
58
+
59
+ using namespace std;
60
+
61
+
62
+
63
+ range x(5,8);
64
+
65
+ range ys[] = {
66
+
67
+ {2,4}, {2,7}, {6,7}, {6,9}
68
+
69
+ };
70
+
71
+ for ( const range& y : ys ) {
72
+
73
+ cout << x << " : " << y << " ... " << boolalpha << in_range(x,y) << endl;
74
+
75
+ }
76
+
77
+
78
+
79
+ return 0;
80
+
81
+ }
82
+
83
+
84
+
85
+ /* 実行結果
86
+
87
+ (5,8) : (2,4) ... true
88
+
89
+ (5,8) : (2,7) ... false
90
+
91
+ (5,8) : (6,7) ... false
92
+
93
+ (5,8) : (6,9) ... false
94
+
95
+ */
96
+
97
+ ```

1

加筆

2018/02/12 00:59

投稿

episteme
episteme

スコア16612

test CHANGED
@@ -1,3 +1,7 @@
1
1
  ①start ①end ②start ②end を昇順に並べたとき
2
2
 
3
3
  ①①②② または ②②①① となればよさげ。
4
+
5
+
6
+
7
+ ってことは、 ①end < ②start または ②end < ①start なら条件を満たしそう。