codeforces 830A

来源:互联网 发布:php cgi开发 编辑:程序博客网 时间:2024/06/13 22:53

第一眼看到就觉得是二分答案,但是没有仔细去想,就放弃了。

#include <bits/stdc++.h>using namespace std;typedef long long ll;ll read(){    ll ret=0;    char ch=getchar();    while(ch<'0'||ch>'9') ch=getchar();    for(; ch>='0'&&ch<='9'; ch=getchar()) ret=ret*10+ch-'0';    return ret;}ll a[3005],b[3005];ll n,k,p;bool f(int x){    int j=1;    for(int i=1;i<=n;)    {        if(j==k+1) return 0;        if(abs(a[i]-b[j])+abs(b[j]-p)<=x)i++,j++;        else j++;    }    return 1;}int main(){    n=read(),k=read(),p=read();    for(int i=1; i<=n; i++)        a[i]=read();    for(int i=1; i<=k; i++)        b[i]=read();    if(n==1)    {        ll ans=2e10+10;        for(int i=1; i<=k; i++)            ans=min(ans,abs(a[1]-b[k])+abs(b[k]-p));        cout<<ans<<endl;        return 0;    }    sort(a+1,a+n+1);    sort(b+1,b+k+1);    ll l=0,r=4e9+5,mid;    while(l<=r)    {        mid=(l+r)/2;        if(f(mid)) r=mid-1;        else l=mid+1;    }    cout<<l<<endl;}