题解 P5098 【[USACO2004OPEN]Cave Cows 3 洞穴里的牛之三】
题目链接:Luogu 5098
约翰的
Solution
由于
- 如果
y_i\ge y_j ,那么\texttt{原式}=x_i-x_j+y_i-y_j=(x_i+y_i)-(x_j+y_j) 。答案最大为\max_{x+y}-\min_{x+y} 。 - 如果
y_i<y_j ,那么\texttt{原式}=x_i-x_j-y_i+y_j=(x_i-y_i)-(x_j-y_j) 。答案最大为\max_{x-y}-\min_{x-y} 。
所以我们只需要维护
时间复杂度:
Code
#include <cstdio>
#include <algorithm>
const int inf=1<<30;
int main() {
int n,a=-inf,b=inf,c=-inf,d=inf;
for(scanf("%d",&n);n--;) {
int x,y;
scanf("%d%d",&x,&y);
a=std::max(a,x+y);
b=std::min(b,x+y);
c=std::max(c,x-y);
d=std::min(d,x-y);
}
printf("%d\n",std::max(a-b,c-d));
return 0;
}