AIZU ONLINE JUDGE

AOJ ITP2 5_A(Sorting Pairs)を解く

AOJ_ITP2_5_A

Aizu Online Judge(AOJ)が提供している「プログラミング応用」(ITP2)の5_A問題をC++で解いてみました。

ITP2では、「プログラミングのための基礎ライブラリを獲得します」とあります。トピック#5では、「順列」というテーマで学びます。

問題(5_A: Sorting Pairs)

問題はリンク先をご覧ください。

AOJ ITP2 5_A問題: Sorting Pairs

2つの異なる型の値を保持する pair について学びます。

Pair について

以下は、cpprefjp 様の記事を参考にさせていただきました。

pair は、2つの異なる型の値を保持することができます。以下のメンバ変数、ヘルパ関数が使えます。

名前説明
firstpair の最初の値を参照するメンバ変数
secondpair の2番目の値を参照するメンバ変数
make_pairpair を構築するヘルパ関数

C++ プログラム例(ITP2 5_A)

pair の値を vector の要素として格納して sort します。sort は、最初のメンバで sort した後に、次のメンバで sort します。結果的に、問題が要求している並び順になります。

pair に関係するコードの背景色を変更しました。以下は、C++のプログラムです。

#include <iostream>
#include <utility>

#include <vector>
#include <algorithm>

using namespace std;

int main()
{
	int n;
	cin >> n;

	vector<pair<int, int>> data(n);
	for (int i = 0; i < n; ++i) {
		int x, y;
		cin >> x >> y;
		data[i] = make_pair(x, y);
	}

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

	for (int i = 0; i < n; ++i) {
		cout << data[i].first << " " << data[i].second << endl;
	}

	return 0;
}

上記プログラムは、AOJ で「AC(Accepted=正解)」と判定されました。

最後に

pair は、いろいろな場合に使えます。同じ型を指定して、2次元の座標を保持するような使い方もできます。

引き続き、ITP2 の問題を紹介していきます。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA