[백준 1269번] 대칭 차집합
2017. 8. 23. 22:58ㆍ알고리즘/백준
반응형
소스코드
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | #include <iostream> using namespace std; int na, nb, a[200001], b[200001], tmp[200001], r=0; void merge(int arr[], int start, int mid, int end) { int lidx = start, tmpidx = 0, ridx = mid + 1; while (lidx <= mid&&ridx <= end) { if (arr[lidx] < arr[ridx]) tmp[tmpidx] = arr[lidx++]; else tmp[tmpidx] = arr[ridx++]; tmpidx++; } while (lidx <= mid) tmp[tmpidx++] = arr[lidx++]; while (ridx <= end) tmp[tmpidx++] = arr[ridx++]; tmpidx = 0; for (int i = start; i <= end; i++) arr[i] = tmp[tmpidx++]; } void merge_sort(int arr[], int start, int end) { if (start == end) return; int mid = (start + end) / 2; merge_sort(arr, start, mid); merge_sort(arr, mid + 1, end); merge(arr, start, mid, end); } int main() { ios::sync_with_stdio(false); cin >> na >> nb; for (int i = 0; i < na; i++) cin >> a[i]; for (int i = 0; i < nb; i++) cin >> b[i]; merge_sort(a, 0, na - 1); merge_sort(b, 0, nb - 1); int aidx=0, bidx=0; while (aidx < na && bidx < nb) { if (a[aidx] == b[bidx]) r++,aidx++,bidx++; else if (a[aidx] < b[bidx]) aidx++; else if (a[aidx] > b[bidx]) bidx++; } cout << (na-r) + (nb-r) << '\n'; return 0; } | cs |
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[백준 9440번] 숫자 더하기 (0) | 2017.08.30 |
---|---|
[백준 4963번] 섬의 개수 (0) | 2017.08.27 |
[백준 1068번] 트리 (1) | 2017.08.21 |
[백준 2688번] 줄어들지 않아 (0) | 2017.08.21 |
[백준 1890번] 점프 (0) | 2017.08.15 |