1. 程式人生 > >洛谷 P1678 煩惱的高考志願

洛谷 P1678 煩惱的高考志願

思路:幾乎所有的題解都說這題需要二分,其實排個序用個標記滑移下就好了。

注意:邊界情況,如一個估分比所有分數線都高或都低的情況。

程式碼:

#include<bits/stdc++.h>
using namespace std;

#define maxn 100000
#define read(x) scanf("%d",&x)
#define ll long long

int n,m;
int a[maxn+5];
int b[maxn+5];

int main() {
	read(m),read(n);
	for(int i=1;i<=m;i++) read(b[i])
; for(int i=1;i<=n;i++) read(a[i]); sort(a+1,a+1+n); sort(b+1,b+1+m); ll ans=0; int t=2; b[m+1]=1e9; for(int i=1;i<=n;i++) { while(a[i]>=b[t]) ++t; ans+=min(abs(b[t]-a[i]),abs(a[i]-b[t-1])); } printf("%lld",ans); return 0; }