This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
const int nx=2e5+5;
int n, a[nx], b[nx], c[nx], used[nx];
vector<pair<int, int>> x, y, z;
int main()
{
    cin.tie(NULL)->sync_with_stdio(false);
    cin>>n;
    for (int i=1; i<=n; i++) cin>>a[i]>>b[i]>>c[i], x.push_back({a[i], i}), y.push_back({b[i], i}), z.push_back({c[i], i});
    sort(x.begin(), x.end());
    reverse(x.begin(), x.end());
    sort(y.begin(), y.end());
    reverse(y.begin(), y.end());
    sort(z.begin(), z.end());
    reverse(z.begin(), z.end());
    int i=0, j=0, k=0;
    while (i<n&&j<n&&k<n)
    {
        if (used[x[i].second]) i++;
        else if (used[y[j].second]) j++;
        else if (used[z[k].second]) k++;
        else if (b[x[i].second]==b[y[j].second]||c[x[i].second]==c[z[k].second]) used[x[i].second]=1;
        else if (a[x[i].second]==a[y[j].second]||c[y[j].second]==c[z[k].second]) used[y[j].second]=1;
        else if (a[x[i].second]==a[z[k].second]||b[y[j].second]==b[z[k].second]) used[z[k].second]=1;
        else return cout<<x[i].first+y[j].first+z[k].first, 0;
    }
    cout<<-1;
}
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |