洛谷 P1678 煩惱的高考志願
阿新 • • 發佈:2018-12-23
思路:幾乎所有的題解都說這題需要二分,其實排個序用個標記滑移下就好了。
注意:邊界情況,如一個估分比所有分數線都高或都低的情況。
程式碼:
#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;
}