티스토리 뷰
간단한 정렬 문제이다.
N이 주어지고 3 * N개의 입력으로 숫자들이 입력된다. 이때 i (1 <= i <= N)에 속하는 숫자들은 반드시 3번 입력이 된다.
이때, 각 i가 2번째로 입력되는 인덱스를 기준으로, 정렬을 해서 출력을 하라고 한다.
N이 1e5이하이므로, O(N) 짜리 배열을 하나 만들고, 각 숫자가 몇번 입력되었는지 count하자. 2번째로 입력된 순간 vector에 넣고 인덱스를 기준으로 정렬을 하면 된다.
#include<iostream>
#include <cstring>
#include <map>
#include <vector>
#include <algorithm>
#define X first
#define Y second
using namespace std;
int N, cnt[100010];
typedef pair<int, int> pii;
vector<pii> v;
bool compare(pii a, pii b) {
return a.Y < b.Y;
}
int main() {
cin >> N;
for (int i=0; i<3*N; i++) {
int x;
cin >> x;
cnt[x]++;
if (cnt[x] == 2) {
v.push_back({x, i});
}
}
sort(v.begin(), v.end(), compare);
for (auto curr : v) {
cout << curr.X << ' ';
}
}
'PS > AtCoder' 카테고리의 다른 글
[AtCoder] ABC307 (0) | 2023.06.24 |
---|---|
[Atcoder] ABC306 :: D - Poisonous Full-Course (0) | 2023.06.19 |
[Atcoder] ABC302 :: E - Isolation (0) | 2023.06.15 |
[Atcoder] ABC302 :: D - Impartial Gift (2) | 2023.06.13 |
[Atcoder] ABC305 :: E - Art Gallery on Graph (2) | 2023.06.12 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- java
- network
- cs
- soft delete
- Operating System
- fiber
- ARP
- go
- mmu
- paging
- spring
- OS
- effective
- algorithm
- Database
- GORM
- Effective Java
- 공지
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함