Submission #1261471

#TimeUsernameProblemLanguageResultExecution timeMemory
1261471nguynTeam Contest (JOI22_team)C++20
100 / 100
97 ms8068 KiB
#include <bits/stdc++.h>
using namespace std;

#define ll long long
#define F first
#define S second
#define pb push_back
#define pii pair<int, int>

const int N = 1.5e5 + 5;

struct Student {
    int x, y, z, i;
} a[N], b[N], c[N];

bool cmp1(Student x, Student y) {
    return (pii){x.x, x.i} <= (pii){y.x, y.i};
}
bool cmp2(Student x, Student y) {
    return (pii){x.y, x.i} <= (pii){y.y, y.i};
}
bool cmp3(Student x, Student y) {
    return (pii){x.z, x.i} <= (pii){y.z, y.i};
}
int vis[N];
int n;

signed main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cin >> n;
    for (int i = 1; i <= n; i++) {
        int x, y, z;
        cin >> x >> y >> z;
        a[i] = {x, y, z, i};
        b[i] = c[i] = a[i];
    }
    sort(a + 1, a + 1 + n, cmp1);
    sort(b + 1, b + 1 + n, cmp2);
    sort(c + 1, c + 1 + n, cmp3);
    int id1, id2, id3;
    id1 = id2 = id3 = n;
    while(id1 >= 1 && id2 >= 1 && id3 >= 1) {
        if (a[id1].x > b[id2].x && a[id1].x > c[id3].x && b[id2].y > a[id1].y && b[id2].y > c[id3].y && c[id3].z > a[id1].z && c[id3].z > b[id2].z) {
            cout << a[id1].x + b[id2].y + c[id3].z;
            return 0;
        }
        else {
            if (a[id1].x <= b[id2].x || c[id3].z <= b[id2].z) vis[b[id2].i] = 1;
            if (b[id2].y <= a[id1].y || c[id3].z <= a[id1].z) vis[a[id1].i] = 1;
            if (a[id1].x <= c[id3].x || b[id2].y <= c[id3].y) vis[c[id3].i] = 1;
        }
        while(vis[a[id1].i] && id1 >= 1) id1--;
        while(vis[b[id2].i] && id2 >= 1) id2--;
        while(vis[c[id3].i] && id3 >= 1) id3--;
    }
    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...