【算法】【曼哈顿距离相关】

0 阅读1分钟

atcoder.jp/contests/ty…

代码

#include <bits/stdc++.h>  
using namespace std;  
using ll=long long;  
ll n,x[1<<18],y[1<<18];  
ll q,t[1<<18];  
ll mix=(1ll<<60),mx=-(1ll<<60);  
ll miy=(1ll<<60),my=-(1ll<<60);  
void so(){  
      
}int main(){  
    ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);  
    cin>>n>>q;  
    for(int i=1;i<=n;i++)cin>>x[i]>>y[i];  
    for(int i=1;i<=q;i++)cin>>t[i];  
    for(int i=1;i<=n;i++){  
        ll p1=x[i]+y[i];  
        ll p2=y[i]-x[i];  
        x[i]=p1;  
        y[i]=p2;  
        mix=min(mix,x[i]);  
        mx=max(mx,x[i]);  
        miy=min(miy,y[i]);  
        my=max(my,y[i]);  
    }for(int i=1;i<=q;i++){  
        ll ret1=abs(x[t[i]]-mix);  
        ll ret2=abs(x[t[i]]-mx);  
        ll ret3=abs(y[t[i]]-miy);  
        ll ret4=abs(y[t[i]]-my);  
        cout<<max({ret1,ret2,ret3,ret4})<<'\n';  
    }  
}

思路

7e8ec9fc99ec9a94dbd8de1db231ab51.jpg