teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

修正

2018/02/12 01:01

投稿

episteme
episteme

スコア16612

answer CHANGED
@@ -17,7 +17,7 @@
17
17
  return r.first <= r.second;
18
18
  }
19
19
 
20
- bool in_range(const range& x, const range& y) {
20
+ bool out_range(const range& x, const range& y) {
21
21
  if ( is_valid(x) && is_valid(y) ) {
22
22
  if ( x.second < y.first ) return true;
23
23
  if ( y.second < x.first ) return true;
@@ -34,7 +34,7 @@
34
34
  {2,4}, {2,7}, {6,7}, {6,9}
35
35
  };
36
36
  for ( const range& y : ys ) {
37
- cout << x << " : " << y << " ... " << boolalpha << in_range(x,y) << endl;
37
+ cout << x << " : " << y << " ... " << boolalpha << out_range(x,y) << endl;
38
38
  }
39
39
 
40
40
  return 0;

2

追記

2018/02/12 01:01

投稿

episteme
episteme

スコア16612

answer CHANGED
@@ -1,4 +1,49 @@
1
1
  ①start ①end ②start ②end を昇順に並べたとき
2
2
  ①①②② または ②②①① となればよさげ。
3
3
 
4
- ってことは、 ①end < ②start または ②end < ①start なら条件を満たしそう。
4
+ ってことは、 ①end < ②start または ②end < ①start なら条件を満たしそう。
5
+
6
+ ```C++
7
+ #include <iostream>
8
+ #include <utility>
9
+
10
+ typedef std::pair<int,int> range;
11
+
12
+ std::ostream& operator<<(std::ostream& stream, const range& r) {
13
+ return stream << '(' << r.first << ',' << r.second << ")";
14
+ }
15
+
16
+ bool is_valid(const range& r) {
17
+ return r.first <= r.second;
18
+ }
19
+
20
+ bool in_range(const range& x, const range& y) {
21
+ if ( is_valid(x) && is_valid(y) ) {
22
+ if ( x.second < y.first ) return true;
23
+ if ( y.second < x.first ) return true;
24
+ }
25
+ return false;
26
+ }
27
+
28
+
29
+ int main(){
30
+ using namespace std;
31
+
32
+ range x(5,8);
33
+ range ys[] = {
34
+ {2,4}, {2,7}, {6,7}, {6,9}
35
+ };
36
+ for ( const range& y : ys ) {
37
+ cout << x << " : " << y << " ... " << boolalpha << in_range(x,y) << endl;
38
+ }
39
+
40
+ return 0;
41
+ }
42
+
43
+ /* 実行結果
44
+ (5,8) : (2,4) ... true
45
+ (5,8) : (2,7) ... false
46
+ (5,8) : (6,7) ... false
47
+ (5,8) : (6,9) ... false
48
+ */
49
+ ```

1

加筆

2018/02/12 00:59

投稿

episteme
episteme

スコア16612

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