안녕하세요. 오늘은 최후의 승자를 구할 거예요.
https://www.acmicpc.net/problem/12760
일단 입력을 받습니다.
그리고 역순으로 정렬을 합니다.
M번 반복을 합니다.
각각의 차례에서 각 사람의 수를 보고 최댓값을 구한뒤 그 최댓값을 가진 사람에게 cnt++해줍니다.
cnt의 최댓값이 있는 사람을 출력해줍니다.
#include <iostream>
#include <algorithm>
#include <vector>
#define ll long long
using namespace std;
int main(void)
{
ios_base::sync_with_stdio(false); cin.tie(NULL);
ll N, M, i, j, cnt[111] = { 0 };
vector <ll> v[111];
cin >> N >> M;
for (i = 1; i <= N; i++)
{
ll x;
for (j = 1; j <= M; j++)
{
cin >> x;
v[i].push_back(x);
}
sort(v[i].begin(), v[i].end(), greater<>());
}
for (i = 0; i < M; i++)
{
ll mx = 0;
for (j = 1; j <= N; j++) mx = max(mx, v[j][i]);
for (j = 1; j <= N; j++)
if (v[j][i] == mx)
cnt[j]++;
}
ll ans = 0;
for (i = 1; i <= N; i++)
ans = max(ans, cnt[i]);
for (i = 1; i <= N; i++)
if (ans == cnt[i])
cout << i << ' ';
}
감사합니다.