EX22 - 3.02 Editorial /

Time Limit: 2 sec / Memory Limit: 256 MB

説明ページに戻る

問題文

整数a_i, b_iのペア(a_i, b_i)がN個与えられます(1 \leq i \leq N)。b_iが小さい順にペアを並べ替えてください。


制約

  • 1 \leq N \leq 100
  • 1 \leq a_i, b_i \leq 10^9
  • b_iは全て異なる
  • 入力はすべて整数

入力

入力は次の形式で標準入力から与えられます。

N
a_1 b_1
a_2 b_2
︙ ︙
a_N b_N

出力

ペアを並べ替えた順に1行毎に出力してください。 各ペアはa_ib_iをスペース区切りで出力してください。


ジャッジでは以下の入力例以外のケースに関してもテストされることに注意。

入力例1

3
5 2
2 7
4 1

出力例1

4 1
5 2
2 7

(5, 2), (2, 7), (4, 1)という3つのペアがあり、b_iの値が小さい順に並べ替えると、(4, 1), (5, 2), (2, 7)となります。

入力例2

5
1 2
3 4
5 6
7 8
9 10

出力例2

1 2
3 4
5 6
7 8
9 10

ヒント

クリックでヒントを開く

  • pair<int, int>で2つの整数のペアを表すことができます。
  • pairを比較すると、1番目の値で比較され、等しい場合は2番目の値で比較されます。
  • 配列を要素が小さい順に並べ替えるにはsort(a.begin(), a.end());とします。


テスト入出力

書いたプログラムがACにならず、原因がどうしてもわからないときだけ見てください。

クリックでテスト入出力を見る

テスト入力1
100
93 4
54 22
36 41
55 65
48 27
12 1
37 67
68 39
80 10
56 8
87 90
16 47
76 88
38 13
46 87
40 48
84 68
94 33
49 29
3 11
98 6
18 21
85 77
23 45
73 58
78 42
31 12
21 60
66 54
47 14
9 7
28 53
41 82
91 83
61 74
92 91
96 95
90 81
17 66
22 89
72 43
39 56
57 80
70 100
58 69
74 34
51 64
25 20
67 25
97 62
63 55
19 26
15 2
82 5
20 92
34 31
43 73
79 28
1 57
99 32
13 38
88 36
24 51
59 19
64 23
89 79
65 3
81 84
27 78
44 52
53 59
6 61
50 71
14 40
2 49
83 75
77 96
30 85
95 15
71 86
35 50
52 44
42 18
75 70
29 94
8 46
60 76
5 98
69 93
11 99
10 72
32 35
7 9
86 24
26 16
62 17
100 97
4 30
45 63
33 37
テスト出力1
12 1
15 2
65 3
93 4
82 5
98 6
9 7
56 8
7 9
80 10
3 11
31 12
38 13
47 14
95 15
26 16
62 17
42 18
59 19
25 20
18 21
54 22
64 23
86 24
67 25
19 26
48 27
79 28
49 29
4 30
34 31
99 32
94 33
74 34
32 35
88 36
33 37
13 38
68 39
14 40
36 41
78 42
72 43
52 44
23 45
8 46
16 47
40 48
2 49
35 50
24 51
44 52
28 53
66 54
63 55
39 56
1 57
73 58
53 59
21 60
6 61
97 62
45 63
51 64
55 65
17 66
37 67
84 68
58 69
75 70
50 71
10 72
43 73
61 74
83 75
60 76
85 77
27 78
89 79
57 80
90 81
41 82
91 83
81 84
30 85
71 86
46 87
76 88
22 89
87 90
92 91
20 92
69 93
29 94
96 95
77 96
100 97
5 98
11 99
70 100

テスト入力2
100
516111320 607515272
222610184 248356480
61883986 245487676
206662228 533989888
69129331 777444148
240199961 432234636
426231114 336813804
321022003 57262799
987178129 850725892
947102866 972781313
925126447 138391343
616274448 355808755
714725587 135574527
242294936 747031846
712001433 210877082
181182763 770306728
93942008 774494957
724829041 835108740
344285556 521741371
833231327 603241645
607948534 214246948
918457894 886239485
235309772 705607918
283022479 376033551
274016160 224876948
119317651 487762742
86470334 681700654
230829137 667556773
786823599 522783812
552745413 742568795
187877449 678955882
92450487 797581025
57997903 741784382
15453784 899476414
228873791 489714188
923423708 985237362
178220373 117577774
523186879 681227121
841286768 74441749
229826134 478391450
62710049 210080103
594857199 60772664
728567957 220290043
277000690 799270840
828251052 813032112
322627026 328640184
630777206 93015078
143835290 305081041
78963996 850741582
185710453 415807807
224069168 194535462
765198511 925540935
67423218 161316172
139362266 380170512
23387958 140419953
727968221 212850176
929329071 680065291
80699708 674702419
824108967 489282458
563350357 865651077
580350921 922504314
124656307 134201888
513360123 776145804
161691774 176062866
681917529 535777959
798798922 678858034
778992896 889103485
983935974 111383938
589373003 592835023
980332103 729109938
586355723 562793775
424189799 402925777
326355130 246164484
106061524 868992059
175266265 361785497
247489202 829929333
872172162 585678993
725362470 819053997
856167633 586840059
474710785 856608830
638675377 822416002
176847119 78399228
238118171 211620634
302761599 410660344
340827370 584914156
840925927 471614751
278196506 194743308
921788254 661004915
418241172 372234551
423524176 744703832
79167871 125578990
808014283 603127562
319194141 766981002
81534592 626533314
359147052 464468288
279768551 598170192
659558263 966172428
339372240 602852466
583878922 371264416
674367424 759010423
テスト出力2
321022003 57262799
594857199 60772664
841286768 74441749
176847119 78399228
630777206 93015078
983935974 111383938
178220373 117577774
79167871 125578990
124656307 134201888
714725587 135574527
925126447 138391343
23387958 140419953
67423218 161316172
161691774 176062866
224069168 194535462
278196506 194743308
62710049 210080103
712001433 210877082
238118171 211620634
727968221 212850176
607948534 214246948
728567957 220290043
274016160 224876948
61883986 245487676
326355130 246164484
222610184 248356480
143835290 305081041
322627026 328640184
426231114 336813804
616274448 355808755
175266265 361785497
583878922 371264416
418241172 372234551
283022479 376033551
139362266 380170512
424189799 402925777
302761599 410660344
185710453 415807807
240199961 432234636
359147052 464468288
840925927 471614751
229826134 478391450
119317651 487762742
824108967 489282458
228873791 489714188
344285556 521741371
786823599 522783812
206662228 533989888
681917529 535777959
586355723 562793775
340827370 584914156
872172162 585678993
856167633 586840059
589373003 592835023
279768551 598170192
339372240 602852466
808014283 603127562
833231327 603241645
516111320 607515272
81534592 626533314
921788254 661004915
230829137 667556773
80699708 674702419
798798922 678858034
187877449 678955882
929329071 680065291
523186879 681227121
86470334 681700654
235309772 705607918
980332103 729109938
57997903 741784382
552745413 742568795
423524176 744703832
242294936 747031846
674367424 759010423
319194141 766981002
181182763 770306728
93942008 774494957
513360123 776145804
69129331 777444148
92450487 797581025
277000690 799270840
828251052 813032112
725362470 819053997
638675377 822416002
247489202 829929333
724829041 835108740
987178129 850725892
78963996 850741582
474710785 856608830
563350357 865651077
106061524 868992059
918457894 886239485
778992896 889103485
15453784 899476414
580350921 922504314
765198511 925540935
659558263 966172428
947102866 972781313
923423708 985237362


解答例

必ず自分で問題に挑戦してみてから見てください。

クリックで解答例を見る

pair<int, int>の配列を用意して、(b_i, a_i)となるように格納すれば、sortするだけでbが小さい順に並べ替えることができます。

#include <bits/stdc++.h>
using namespace std;

int main() {
  int N;
  cin >> N;
  vector<pair<int, int>> p(N);
  for (int i = 0; i < N; i++) {
    int a, b;
    cin >> a >> b;
    p.at(i) = make_pair(b, a);  // b, a の順でペアにする
  }

  sort(p.begin(), p.end());

  for (int i = 0; i < N; i++) {
    int b, a;
    tie(b, a) = p.at(i);  // b, a の順であることに注意
    cout << a << " " << b << endl;
  }
}