PS

BOJ 18869 : 멀티버스 Ⅱ

lickelon 2024. 6. 12. 16:50
  • 문제 링크 : boj.kr/18869
  • 난이도 : G5
  • 태그 : 좌표압축

코드

#include <bits/stdc++.h>

#define all(x) (x).begin(), (x).end()

#define INF 0x7FFFFFFF

using namespace std;

using ll = long long;
using ld = long double;
using pii = pair<int,int>;
using pll = pair<ll, ll>;

void process(vector<int>& arr) {
    vector<int> temp(arr.begin(), arr.end());
    sort(all(temp));
    temp.erase(unique(all(temp)), temp.end());

    for(int i = 0; i < arr.size(); i++) {
        int idx = lower_bound(all(temp), arr[i]) - temp.begin();
        arr[i] = idx;
    }
}

int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);

    int n, m;
    cin >> m >> n;
    vector<vector<int>> arr(m, vector<int>(n));
    for(int i = 0; i < m; i++) {
        for(auto &u : arr[i]) cin >> u;
        process(arr[i]);
    }

    int ans = 0;
    for(int i = 0; i < m; i++) {
        for(int j = i+1; j < m; j++) {
            bool flag = true;
            for(int k = 0; k < n; k++) {
                if(arr[i][k] != arr[j][k]) {
                    flag = false;
                    break;
                }
            }
            if(flag) ans++;
        }
    }
    cout << ans;

    return 0;
}

풀이

좌표압축 후에 각 우주를 브루트포스로 비교한다.

728x90

'PS' 카테고리의 다른 글

BOJ 31862 : 승리하라  (0) 2024.06.14
BOJ 17505 : 링고와 순열  (1) 2024.06.13
BOJ 1414 : 불우이웃돕기  (0) 2024.06.11
BOJ 28018 : 시간이 겹칠까?  (0) 2024.06.10
BOJ 2487 : 섞기 순열  (0) 2024.06.09