はまやんはまやんはまやん

hamayanhamayan's blog

Cards [Codeforces 364 : Div2 A]

問題

http://codeforces.com/contest/701/problem/A

n枚の数が書かれたカードがある。
n/2人のプレイヤーが2枚ずつとる。
各プレイヤーがもつカードの和が等しくなるにはどのように取ればよいか。

2 <= n <= 100
1 <= ai(カードに書いてある数) <= 100

考察

1. Div2 Aなのでソートして終わり的なやつでしょう
2. ガウスの幼少期のアレみたいな感じかな?
3. 考えると、ソートして最も小さい数と最も大きい数、その次に小さい数とその次に大きい数を選んでいけばよい

実装

http://codeforces.com/contest/701/submission/19328636

int N;
vector<pair<int, int> > cards;
//-----------------------------------------------------------------
int main()
{
	scanf("%d", &N);
	rep(i, 0, N) {
		int c;
		scanf("%d", &c);
		cards.push_back(make_pair(c, i + 1));
	}
	sort(cards.begin(), cards.end());

	rep(i, 0, N / 2) {
		int j = N - 1 - i;
		printf("%d %d\n", cards[i].second, cards[j].second);
	}
}