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 58 59 60
| #include <iostream> #include <cmath> #include <algorithm> using namespace std;
const int N = 1e5 + 10;
int a[N], b[N]; int m, n; int sum;
int main(){ scanf("%d%d", &m, &n); for(int i = 0; i < m; i++) scanf("%d", &a[i]); for(int i = 0; i < n; i++) scanf("%d", &b[i]); sort(a, a + m); for(int i = 0; i < n; i++){ int l = 0, r = m - 1; while(l < r){ int mid = l + r >> 1; if(a[mid] >= b[i]) r = mid; else l = mid + 1; } if(b[i] <= a[0]) sum += a[0] - b[i]; else sum += min(abs(a[l] - b[i]), abs(b[i] - a[l - 1])); } printf("%d", sum); return 0; }
#include <iostream> #include <algorithm> #include <cmath>
using namespace std;
const int N = 1e5 + 10; int a[N]; int m, n; int sum;
int main(){ scanf("%d%d", &m, &n); for(int i = 0; i < m; i++) scanf("%d", &a[i]); sort(a, a + m); for(int i = 0; i < n; i++){ int b; scanf("%d", &b); int d = lower_bound(a, a + m, b) - a; if(d == m) sum += b - a[m - 1]; else if(d == 0) sum += a[0] - b; else sum += min (abs(a[d] - b), abs(a[d - 1] - b)); } printf("%d", sum); return 0; }
|