PS
BOJ 7795 : 먹을 것인가 먹힐 것인가
lickelon
2025. 1. 12. 23:57
- 문제 링크 : 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