Submission #1282305

#TimeUsernameProblemLanguageResultExecution timeMemory
1282305hoangmc2009Team Contest (JOI22_team)C++17
0 / 100
26 ms7756 KiB
#include <bits/stdc++.h> using namespace std; using i64 = long long; int n,mark[200009]; struct Bros { int x,y,z,id; } a[200009],b[200009],c[200009]; bool check(Bros X,Bros Y,Bros Z) { if(X.id==Y.id or X.id==Z.id or Y.id==Z.id) return false; if(X.x<=max(Y.x,Z.x)) return false; if(Y.y<=max(X.y,Z.y)) return false; if(Z.z<=max(X.z,Y.z)) return false; return true; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>n; for(int x,y,z,i=1;i<=n;++i) { cin>>x>>y>>z; a[i]=b[i]=c[i]={x,y,z,i}; } sort(a+1,a+n+1,[&](Bros P,Bros Q){return P.x<Q.x;}); sort(b+1,b+n+1,[&](Bros P,Bros Q){return P.y<Q.y;}); sort(c+1,c+n+1,[&](Bros P,Bros Q){return P.z<Q.z;}); for(int i=n,j=n,k=n;min({i,j,k})>0;) { if(check(a[i],b[j],c[k])) { cout<<a[i].x+b[j].y+c[k].z; return 0; } if(a[i].x<=max(b[j].x,c[k].x)) mark[a[i].id]=1; else if(b[j].y<=max(a[i].y,c[k].y)) mark[b[j].id]=1; else if(c[k].z<=max(a[i].z,b[j].z)) mark[c[k].id]=1; while(i>0 and mark[a[i].id]) --i; while(j>0 and mark[b[j].id]) --j; while(k>0 and mark[c[k].id]) --k; //cerr<<i<<" "<<j<<" "<<k<<endl; } cout<<-1; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...