- 문제 링크 : boj.kr/7795
- 난이도 : S3
- 태그 : 정렬, 이분탐색
코드
#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>;
int main()
{
ios::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
int T;
cin >> T;
while(T--) {
int n, m;
cin >> n >> m;
vector<int> arr(n);
for(auto &e : arr) cin >> e;
sort(all(arr));
int ans = 0;
for(int i = 0; i < m; i++) {
int input;
cin >> input;
ans += arr.end() - upper_bound(all(arr), input);
}
cout << ans << "\n";
}
return 0;
}
풀이
A가 B보다 큰 쌍은 각 A_i에 대하여 A_i보다 작은 B의 개수의 합과 같다.
이는 각 B_i에 대하여 B_i보다 큰 A의 개수의 합과 동치이다.
A를 미리 입력을 받아서 정렬해두면 각 B_i에 대하여 B_i보다 큰 A의 개수를 이분탐색을 통해 구할 수 있다.
728x90
'PS' 카테고리의 다른 글
BOJ 33011 : 홀수와 짝수 게임 (0) | 2025.01.14 |
---|---|
BOJ 21030 : Frequent Alphabet (0) | 2025.01.13 |
BOJ 10825 : 국영수 (0) | 2025.01.11 |
BOJ 17127 : 벚꽃이 정보섬에 피어난 이유 (0) | 2025.01.10 |
BOJ 27111 : 출입 기록 (0) | 2025.01.09 |