제출 #1268587

#제출 시각아이디문제언어결과실행 시간메모리
1268587Born_To_LaughTeam Contest (JOI22_team)C++17
100 / 100
72 ms4424 KiB
// Born_To_Laugh - Hughie Do
#include <bits/stdc++.h>
#define alle(AC) AC.begin(), AC.end()
#define fi first
#define se second
using namespace std;
typedef long long ll;
[[maybe_unused]] const ll MOD = 998244353, INF = 1e9 + 7;
const int maxn = 15e4 + 10;
int n;
vector<array<int, 3>> item(maxn);
int idx[maxn], idy[maxn], idz[maxn];
int vis[maxn];
void solve(){
    cin >> n;
    for(int i=1; i<=n; ++i){
        cin >> item[i][0] >> item[i][1] >> item[i][2];
        idx[i] = idy[i] = idz[i] = i;
    }
    sort(idx + 1, idx + 1 + n, [&](int a, int b){
        return item[a][0] > item[b][0];
    });
    sort(idy + 1, idy + 1 + n, [&](int a, int b){
        return item[a][1] > item[b][1];
    });
    sort(idz + 1, idz + 1 + n, [&](int a, int b){
        return item[a][2] > item[b][2];
    });
    /*
    sort cac index theo gia tri cua tung bien
    */
    int id1 = 1, id2 = 1, id3 = 1;
    /*
    neu yeu cau ve y va z cua x qua cao, se giam x
    */
    while(1){
        int i = idx[id1];
        int j = idy[id2];
        int k = idz[id3];
        if(item[i][1] == item[j][1] || item[i][2] == item[k][2]){
            vis[i] = 1;
            id1++;
        }
        if(item[j][0] == item[i][0] || item[j][2] == item[k][2]){
            vis[j] = 1;
            id2++;
        }
        if(item[k][0] == item[i][0] || item[k][1] == item[j][1]){
            vis[k] = 1;
            id3++;
        }
        if(vis[i] + vis[j] + vis[k] == 0){
            cout << item[i][0] + item[j][1] + item[k][2] << '\n';
            return;
        }
        while(vis[idx[id1]]){
            id1++;
        }
        while(vis[idy[id2]]){
            id2++;
        }
        while(vis[idz[id3]]){
            id3++;
        }
        if(id1 > n || id2 > n || id3 > n){
            break;
        }
    }
    cout << -1 << '\n';
}
signed main(){
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    solve();
}
#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...