Submission #648198

#TimeUsernameProblemLanguageResultExecution timeMemory
648198czhang2718Team Contest (JOI22_team)C++17
100 / 100
179 ms14812 KiB
#include "bits/stdc++.h"
using namespace std;

#define rep(i,a,b) for(int i=a; i<=b; i++)
typedef vector<int> vi;
#define pb push_back
#define all(x) x.begin(), x.end()
#define sz(x) (int) x.size()

int n;

int main(){
    cin.tie(0)->sync_with_stdio(0);

    cin >> n;
    vector<vi> v(n, vi(3));
    rep(i,0,n-1){
        cin >> v[i][0] >> v[i][1] >> v[i][2];
    }

    vector<vi> ind(3, vi(n));
    rep(i,0,2){
        iota(all(ind[i]), 0);
        sort(all(ind[i]), [&](int a, int b){
            return v[a][i]<v[b][i];
        });
    }
    vector<bool> del(n);
    while(true){
        rep(i,0,2){
            while(sz(ind[i]) && del[ind[i].back()]) ind[i].pop_back();
            if(!sz(ind[i])){
                cout << -1; return 0;
            }
        }
        vi mx(3);
        rep(i,0,2) mx[i]=v[ind[i].back()][i];

        bool ch=0;
        rep(i,0,2){
            int cnt=0;
            rep(j,0,2){
                cnt+=v[ind[i].back()][j]==mx[j];
            }
            assert(cnt>=1);
            if(cnt>1){
                del[ind[i].back()]=1;
                ind[i].pop_back();
                ch=1;
                break;
            }
        }
        if(!ch) break;
    }

    int sum=0;
    rep(i,0,2){
        sum+=v[ind[i].back()][i];
    }
    cout << sum;
}
#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...