제출 #897874

#제출 시각아이디문제언어결과실행 시간메모리
897874alexander707070Team Contest (JOI22_team)C++14
100 / 100
169 ms8164 KiB
#include<bits/stdc++.h>
#define MAXN 150007
using namespace std;

int n;
int a[MAXN],b[MAXN],c[MAXN];

int sa[MAXN],sb[MAXN],sc[MAXN],pta,ptb,ptc;
bool bad[MAXN];

bool cmpa(int x,int y){
    return a[x]<a[y];
}

bool cmpb(int x,int y){
    return b[x]<b[y];
}

bool cmpc(int x,int y){
    return c[x]<c[y];
}

int main(){

    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i]>>b[i]>>c[i];

        sa[i]=sb[i]=sc[i]=i;
    }
    sort(sa+1,sa+n+1,cmpa);
    sort(sb+1,sb+n+1,cmpb);
    sort(sc+1,sc+n+1,cmpc);

    pta=ptb=ptc=n;

    while(pta>=1 and ptb>=1 and ptc>=1){

        if(b[sa[pta]]==b[sb[ptb]] or c[sa[pta]]==c[sc[ptc]]){
            bad[sa[pta]]=true; pta--;
        }else if(a[sb[ptb]]==a[sa[pta]] or c[sb[ptb]]==c[sc[ptc]]){
            bad[sb[ptb]]=true; ptb--;
        }else if(b[sb[ptb]]==b[sc[ptc]] or a[sa[pta]]==a[sc[ptc]]){
            bad[sc[ptc]]=true; ptc--;
        }else break;

        while(bad[sa[pta]])pta--;
        while(bad[sb[ptb]])ptb--;
        while(bad[sc[ptc]])ptc--;
    }

    if(pta==0 or ptb==0 or ptc==0){
        cout<<"-1\n";
    }else{
        cout<<a[sa[pta]]+b[sb[ptb]]+c[sc[ptc]]<<"\n";
    }

    return 0;
}
#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...