真的麻了,一堆错误信息看不出来……
考前降至/kel
谢谢大佬
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=2e5+10;
int n,id[3][N];
struct Q{
int x,y,z;
};
priority_queue<Q> q;
struct Nd{
int x,y,z,id;
}a[N],b[N];
bool cmp1(Nd xx,Nd yy){
return xx.x<yy.x;
}
bool cmp2(Nd xx,Nd yy){
return xx.y<yy.y;
}
bool cmp3(Nd xx,Nd yy){
return xx.z<yy.z;
}
signed main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d%d%d",&a[i].x,&a[i].y,&a[i].z),a[i].id=i;
b[i]=a[i];
}
sort(b+1,b+n+1,cmp1);
for(int i=1;i<=n;i++) id[0][i]=b[i].id;
sort(b+1,b+n+1,cmp2);
for(int i=1;i<=n;i++) id[1][i]=b[i].id;
sort(b+1,b+n+1,cmp3);
for(int i=1;i<=n;i++) id[2][i]=b[i].id;
q.push({n,n,n});
int t[3];
while(!q.empty()){
Q T=q.top();
t[0]=T.x,t[1]=T.y,t[2]=T.z;
q.pop();
bool flag=1;
if(a[id[0][t[0]]].x<=a[id[1][t[1]]].x||a[id[0][t[0]]].x<=a[id[2][t[2]]].x) flag=0;
if(a[id[1][t[1]]].y<=a[id[0][t[0]]].y||a[id[1][t[1]]].y<=a[id[2][t[2]]].y) flag=0;
if(a[id[2][t[2]]].z<=a[id[1][t[1]]].z||a[id[2][t[2]]].z<=a[id[0][t[0]]].z) flag=0;
if(flag){
printf("%d",a[id[0][t[0]]].x+a[id[1][t[1]]].y+a[id[2][t[2]]].z);
return 0;
}
if(t[0]!=1) q.push({t[0]-1,t[1],t[2]});
if(t[1]!=1) q.push({t[0],t[1]-1,t[2]});
if(t[2]!=1) q.push({t[0],t[1],t[2]-1});
}
return 0;
}