Submission #576738

#TimeUsernameProblemLanguageResultExecution timeMemory
576738Soumya1Team Contest (JOI22_team)C++17
0 / 100
95 ms17028 KiB
#include <bits/stdc++.h>
#ifdef __LOCAL__
  #include <debug_local.h>
#endif
using namespace std;
void testCase() {
  int n;
  cin >> n;
  vector<tuple<int, int, int>> a(n);
  for (auto &[x, y, z] : a) cin >> x >> y >> z;
  sort(a.begin(), a.end());
  set<pair<int, int>> s1, s2;
  for (int i = 0; i < n; i++) {
    auto [x, y, z] = a[i];
    s1.insert({y, i});
    s2.insert({z, i});
  }
  int ans = -1;
  vector<bool> deleted(n);
  while (!s1.empty() && (*s1.rbegin()).second == (*s2.rbegin()).second) {
    deleted[(*s1.rbegin()).second];
    s1.erase(prev(s1.end()));
    s2.erase(prev(s2.end()));
  }
  for (int i = n - 1; i >= 0; i--) {
    auto [x, y, z] = a[i];
    if (deleted[i]) continue;
    if (!s1.empty() && (*s1.rbegin()).second != i && (*s2.rbegin()).second != i) {
      ans = max(ans, x + (*s1.rbegin()).first + (*s2.rbegin()).first);
    }
    s1.erase({y, i});
    s2.erase({z, i});
    deleted[i] = true;
    while (!s1.empty() && (*s1.rbegin()).second == (*s2.rbegin()).second) {
      deleted[(*s1.rbegin()).second];
      s1.erase(prev(s1.end()));
      s2.erase(prev(s2.end()));
    }
  }
  cout << ans << "\n";
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);
  testCase();
}
#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...