Notice
Recent Posts
Recent Comments
Link
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

Mini

백준 18870 좌표압축 c++ // 이분탐색 본문

Algorithm/이분탐색

백준 18870 좌표압축 c++ // 이분탐색

Mini_96 2024. 1. 2. 11:31

https://www.acmicpc.net/problem/18870

 

18870번: 좌표 압축

수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표 Xj의 개수와 같아야 한다. X1, X2, ..., XN에

www.acmicpc.net

1. 시행착오

답 : 해당원소보다 작은 원소의 갯수

upper_bound - lower_bound 하면 정답이 아니다...

lower-begin 이 정답이다.

 

2. 전체코드

#include <bits/stdc++.h>
using namespace std;

int n,m;
vector<int> v1,v2;
set<int> s;

int main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cin >> n;
    while (n--) {
        int temp;
        cin >> temp;
        v1.push_back(temp);
        s.insert(temp);
    }
    for (auto i : s) {
        v2.push_back(i); //중복제거한 벡터
    }
    sort(v2.begin(), v2.end());
    
    for (auto i : v1) {
        cout << lower_bound(v2.begin(), v2.end(), i)
            - v2.begin() << " ";
    }
    return 0;
}