提交时间:2024-11-21 14:44:55

运行 ID: 35008

#include<bits/stdc++.h> using namespace std; #define int long long int read(){int x=0,f=1;char c=getchar();while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}while(c>='0'&&c<='9')x=x*10+c-'0',c=getchar();return x*f;} const int MAXN=100010,inf=1000000000000000000; int n,m,ans,us[MAXN]; struct node{ int x,y,z; }p[MAXN],a[MAXN]; int dis(node &x,node y){ int res=max(0ll,y.x-x.x)+max(0ll,y.y-x.y)+max(0ll,y.z-x.z); x.x=max(x.x,y.x),x.y=max(x.y,y.y),x.z=max(x.z,y.z); return res; } void dfs(int now,int sum){ if(sum>=ans)return; if(now==n+1){ ans=sum; return; } for(int i=1;i<=n;i++)if(!us[i]){ a[now]=p[i];us[i]=1; int tmp=0; if(now!=1)tmp=dis(a[now],a[now-1]); dfs(now+1,sum+tmp); us[i]=0; } } bool ei,e; void slv0(){ ans=inf; dfs(1,0); printf("%lld",ans); } void slvei(){ printf("0"); } void slv(){ n=read(); for(int i=1;i<=n;i++)p[i].x=read(),p[i].y=read(),p[i].z=read(),ei|=p[i].x!=p[1].x||p[i].y!=p[1].y,e|=a[i].x!=a[1].x; if(!ei)slvei(); else slv0(); } signed main(){ slv(); return 0; }