euisblue
7795. 먹을 것인가 먹힐 것인가

7795 - 먹을 것인가 먹힐 것인가

C++

1#include <bits/stdc++.h> 2using namespace std; 3 4int findMiddle(vector<int> arr, int x) { 5 int SIZE = arr.size(); 6 int low = 0; 7 int high = SIZE - 1; 8 int mid = 0; 9 while(high >= low) { 10 mid = low + (high-low)/2; 11 if(x == arr[mid]) { 12 while(x == arr[mid-1]) { 13 --mid; 14 if(mid<0) return 0; 15 } 16 return mid; 17 } 18 if(x < arr[mid]) high = mid - 1; 19 else low = mid + 1; 20 } 21 return low; 22} 23 24int main() { 25 int t; 26 cin >> t; 27 28 while(t--) { 29 int cnt = 0; 30 int a,b; 31 cin >> a >> b; 32 vector<int> arr; 33 vector<int> brr; 34 for(int i=0; i<a; ++i) { 35 int temp; cin >> temp; 36 arr.push_back(temp); 37 } 38 for(int i=0; i<b; ++i) { 39 int temp; cin >> temp; 40 brr.push_back(temp); 41 } 42 43 sort(arr.begin(), arr.end()); 44 sort(brr.begin(), brr.end()); 45 46 for(int x : arr) { 47 cnt += findMiddle(brr, x); 48 } 49 cout << cnt << endl; 50 } 51 return 0; 52}