58pts,请问我还有哪些情况没考虑
查看原帖
58pts,请问我还有哪些情况没考虑
661913
liwenxi1145144444楼主2024/3/30 11:19
#include<bits/stdc++.h>
#define int long long
using namespace std;
int x[3],y[3];
int p(int id){
	if(id==1){
		if(y[0]==y[1]&&x[1]>x[0]&&x[1]>x[2]){
			return 1;
		}
		if(y[0]==y[1]&&x[1]<x[0]&&x[1]<=x[2]){
			return 1;
		}
	}else{
		if(x[0]==x[1]&&y[1]>y[0]&&y[1]>y[2]){
			return 1;
		}
		if(x[0]==x[1]&&y[1]<=y[0]&&y[1]<=y[2]){
			return 1;
		}
	}
	return 0;
}
signed main(){
	cin>>x[0]>>y[0]>>x[1]>>y[1]>>x[2]>>y[2];
	int sum=0;
	if(x[1]<x[2]){
		if(y[1]<y[2]){
			sum+=min(abs(x[1]-1-x[0])+abs(y[1]-y[0])+2*p(1),abs(x[1]-x[0])+abs(y[1]-1-y[0])+2*p(2));
		}else if(y[1]>y[2]){
			sum+=min(abs(x[1]-1-x[0])+abs(y[1]-y[0])+2*p(1),abs(x[1]-x[0])+abs(y[1]+1-y[0])+2*p(2));
		}else{
			sum+=abs(x[1]-1-x[0])+2*p(1);
		}
	}else if(x[1]>x[2]){
		if(y[1]<y[2]){
			sum+=min(abs(x[1]+1-x[0])+abs(y[1]-y[0])+2*p(1),abs(x[1]-x[0])+abs(y[1]-1-y[0])+2*p(2));
		}else if(y[1]>y[2]){
			sum+=min(abs(x[1]+1-x[0])+abs(y[1]-y[0])+2*p(1),abs(x[1]-x[0])+abs(y[1]+1-y[0])+2*p(2));
		}else{
			sum+=abs(x[1]+1-x[0])+2*p(1);
		}
	}else{
		if(y[1]<y[2]){
			sum+=abs(y[1]-1-y[0])+2*p(2);
		}else{
			sum+=abs(y[1]+1-y[0])+2*p(2);
		}
	}
	int op=1;
	if(x[2]==x[1]){
		op=0;
	}
	sum+=abs(x[2]-x[1]);
	if(y[2]==y[1]){
		op=0;
	}
	sum+=abs(y[2]-y[1]);
	cout<<sum+2*op;
	return 0;
}
2024/3/30 11:19
加载中...