Submission #770265

#TimeUsernameProblemLanguageResultExecution timeMemory
770265PoonYaPatTeam Contest (JOI22_team)C++14
100 / 100
1044 ms72652 KiB
#include <bits/stdc++.h>
using namespace std;
typedef pair<int,int> pii;

int n,a[150001],b[150001],c[150001];
multiset<int, greater<int>> ms[3];
map<pii,vector<int>> mp[3];
bool del[150001];

int main() {
    ios_base::sync_with_stdio(0); cin.tie(0);
    cin>>n;
    for (int i=0; i<n; ++i) {
        cin>>a[i]>>b[i]>>c[i];
        ms[0].insert(a[i]);
        ms[1].insert(b[i]);
        ms[2].insert(c[i]);
        mp[0][pii(a[i],b[i])].push_back(i);
        mp[1][pii(b[i],c[i])].push_back(i);
        mp[2][pii(c[i],a[i])].push_back(i);
    }

    while (true) {

        int A=*(ms[0].begin()), B=*(ms[1].begin()), C=*(ms[2].begin());

        vector<int> temp;
        for (auto s : mp[0][pii(A,B)]) if (!del[s]) temp.push_back(s);
        for (auto s : mp[1][pii(B,C)]) if (!del[s]) temp.push_back(s);
        for (auto s : mp[2][pii(C,A)]) if (!del[s]) temp.push_back(s);

        if (temp.size()==0) {
            cout<<A+B+C;
            return 0;
        }

        for (auto s : temp) {
            if (del[s]) continue;
            del[s]=true;
            ms[0].erase(ms[0].find(a[s]));
            ms[1].erase(ms[1].find(b[s]));
            ms[2].erase(ms[2].find(c[s]));
        }

        if (ms[0].size()==0 || ms[1].size()==0 || ms[2].size()==0) break;
    }
    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...