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

hamayanhamayan's blog

Guidebook [AtCoder Beginner Contest 128 B]

https://atcoder.jp/contests/abc128/tasks/abc128_b

解説

https://atcoder.jp/contests/abc128/submissions/5777939

特殊なソートのルールが与えられていて、そのルールに沿ってソートをする問題。
C++ではソート時に独自の比較関数を与えることができる。
なので、市名が違えば、市名の昇順で、市名が同じなら点数の降順でソートをするように比較関数を作る。
あとは、それでソートして答えるとAC。

int N;
string S[101];
int P[101];
//---------------------------------------------------------------------------------------------------
void _main() {
	cin >> N;
	rep(i, 0, N) cin >> S[i] >> P[i];

	vector<int> ans;
	rep(i, 0, N) ans.push_back(i);
	sort(all(ans), [&](int a, int b) {
		if (S[a] != S[b]) return S[a] < S[b];
		return P[a] > P[b];
	});

	fore(i, ans) cout << (i + 1) << endl;
}