https://yukicoder.me/problems/no/647
解法
https://yukicoder.me/submissions/235193
各明太子について、買ったメンバーの数を数えよう。
「cnt[m] := m番目の明太子を買ったメンバーの数」
最後にcntが最大のものを取ってきて答える。
int N, A[10101], B[10101], M, X[1010], Y[1010]; int cnt[1010]; //--------------------------------------------------------------------------------------------------- void _main() { cin >> N; rep(i, 0, N) cin >> A[i] >> B[i]; cin >> M; rep(i, 0, M) cin >> X[i] >> Y[i]; rep(m, 0, M) rep(i, 0, N) if (X[m] <= A[i] and B[i] <= Y[m]) cnt[m]++; vector<int> ans; int ma = 0; rep(m, 0, M) { if (ma == cnt[m]) ans.push_back(m + 1); else if (ma < cnt[m]) { ans.clear(); ans.push_back(m + 1); ma = cnt[m]; } } int n = ans.size(); if (ma == 0) { printf("0\n"); return; } rep(i, 0, n) printf("%d\n", ans[i]); }