문제 링크
https://www.acmicpc.net/problem/13701
문제
문제: N개의 정수 A1, A2, ..., AN 을 읽고, 이들 중에서 반복되는 수를 제외하고 남은 N'개의 수 B1, B2, ..., BN’ 을 입력된 순서대로 출력하시오. 이때,
- 0 ≤ Ai < 225 = 33554432, i=1,2,…,N.
- 입력의 개수 N은 1 이상 500만 이하이다.
입력
첫째 줄에 A1, A2, ..., AN이 주어진다.
출력
B1, B2, ..., BN’을 출력한다.
예제 입력 1
12 1 449 12 555 1201 912 555 19372
예제 출력 1
12 1 449 555 1201 912 19372
예제 입력 2
21003957 20891590 11382885 18340118 11354168 5461061 12693617 2552341 14639514 25224366 19239852 136782 17206566 18675414 9536557 24961835 2507460 32083310 4485200 19506627 21087117 9270314 12953612 10216350 8170712 20436397 11382885 29305594 27169105
예제 출력 2
21003957 20891590 11382885 18340118 11354168 5461061 12693617 2552341 14639514 25224366 19239852 136782 17206566 18675414 9536557 24961835 2507460 32083310 4485200 19506627 21087117 9270314 12953612 10216350 8170712 20436397 29305594 27169105
힌트
메모리 제한에 유의하시오.
알고리즘 분류
- 비트마스킹
풀이
코드
#include <iostream>
#include <string>
#include <cmath>
#include <set>
#include <map>
#include <bitset>
#include <stack>
#include <queue>
#include <vector>
#include <algorithm>
#include <climits>
#define FASTIO cin.tie(NULL); cout.tie(NULL); ios::sync_with_stdio(false);
#define MAX 5000001
#define LL long long
#define INF 1e18
using namespace std;
int N;
bitset<(1 << 25)> BT;
void Input() {
while (scanf_s("%d", &N) != -1) {
if (BT[N] == 0) {
BT[N] = 1;
cout << N << " ";
}
};
}
int main() {
FASTIO
Input();
return 0;
}
'BOJ > Gold' 카테고리의 다른 글
[BOJ/Gold 5] 백준 22867 종점(C++) (0) | 2022.03.14 |
---|---|
[BOJ/Gold 5] 백준 1501 영어 읽기(C++) (0) | 2022.03.14 |
[BOJ/Gold 2] 백준 10723 판게아 1(C++) (0) | 2022.03.13 |
[BOJ/Gold 2] 백준 9344 도로(C++) (0) | 2022.03.13 |
[BOJ/Gold 2] 백준 20010 악덕 영주 혜유(C++) (0) | 2022.03.12 |