3 条题解

  • 0
    @ 2024-12-16 21:15:33
    #include<bits/stdc++.h>
    #define int long long
    using namespace std;
    const int inf=0x3f3f3f3f;
    const int f=1e9+7;
    const int N=2e5+10;
    int a[N],b[N];
    void solve()
    {
        int n;
        cin >> n;
        int s1=0,s2=0,b1=0,b2=0;
        for(int i=1;i<=n;i++){
            cin >> a[i];
            s1=max(s1,a[i]);
            s2=min(s2,a[i]);
        }
        for(int i=1;i<=n;i++){
            cin >> b[i];
            b1=max(b1,b[i]);
            b2=min(b2,b[i]);
        }
        int c; cin >> c;
        int sum=0;
        int pos=0;//c是否在a[i]和b[i]之间
        for(int i=1;i<=n;i++){
            if((a[i]>=c && c<=b[i]) || (a[i]<=c && c>=b[i])) pos=1; 
            //若c介于a[i]和b[i]之间,则最后加一即可
            //否则,需要计算最小差值
            sum+=abs(a[i]-b[i]);
        }
        s1=max(s1,b1);
        s2=min(s2,b2);
        if(pos){
            cout << sum + 1 << '\n';
        }else {
            cout << sum + 1 + min(abs(s1-c),abs(s2-c)) << '\n';
        }
    }
    void close(){
        ios::sync_with_stdio(false);
        cin.tie(0);
        cout.tie(0);
    }
    signed main ()
    {
        close();int T = 1;
        cin >> T;
        while(T--) solve();
        return 0;
    } //
    

    信息

    ID
    1101
    时间
    1000ms
    内存
    256MiB
    难度
    7
    标签
    (无)
    递交数
    148
    已通过
    39
    上传者