
N이 50이기에 모든 경우를 확인해 볼 수 있다.
자신보다 덩치가 큰 사람을 세어서 등수를 매겨주면 된다.
#include <iostream>
#include <vector>
using namespace std;
using pii = pair<int, int>;
vector<pii> v;
vector<int> order;
int N;
int main()
{
ios::sync_with_stdio(0), cin.tie(0);
cin >> N;
v = vector<pii>(N);
order = vector<int>(N);
for (pii &i : v)
{
cin >> i.first >> i.second;
}
for (int i = 0; i < N; ++i)
{
int rank = 1;
for (int j = 0; j < N; ++j)
{
if (v[i].first < v[j].first && v[i].second < v[j].second) // 자신보다 덩치가 큰 사람
{
++rank;
}
}
order[i] = rank;
}
for (int &i : order)
{
cout << i << " ";
}
return 0;
}
N이 50인 것을 제대로 확인 안 하고 정렬을 하여서 해결하려 했다.
하지만 2개의 값을 기준으로 정렬하는 것이기에 제대로 된 등수가 나올 리는 없었고 그래서 틀렸다.
이후 다시 제대로 확인해 보니 모든 경우를 확인해서 해결할 수 있는 문제라는 것을 알게 됐다.
자신보다 키와 몸무게가 큰 경우만 세어서 등수로 반영해 주면 된다.