제출 #890037

#제출 시각아이디문제언어결과실행 시간메모리
890037TAhmed33Team Contest (JOI22_team)C++98
55 / 100
2005 ms3500 KiB
#include <bits/stdc++.h> using namespace std; using matr = array <int, 3>; vector <matr> b; int n; int mx = -1; void solve () { sort(b.begin(), b.end()); int ptr = -1; for (int i = 0; i < n; i++) { //i is larger than anything <= ptr in a while (ptr + 1 < i && b[ptr + 1][0] < b[i][0]) ptr++; if (ptr != 0) sort(b.begin(), b.begin() + ptr + 1, [] (matr &x, matr &y) { return x[1] < y[1]; }); int mx2 = 0, ptr2 = -1; for (int j = 0; j <= ptr; j++) { if (b[j][1] <= b[i][1]) continue; while (ptr2 + 1 < j && b[ptr2 + 1][1] < b[j][1]) { ptr2++; mx2 = max(mx2, b[ptr2][2]); } if (mx2 > max(b[j][2], b[i][2])) { mx = max(mx, mx2 + b[j][1] + b[i][0]); } } } } int main () { cin >> n; b.resize(n); bool flag = 1; for (int i = 0; i < n; i++) for (int j = 0; j < 3; j++) cin >> b[i][j], flag &= b[i][j] <= 20; if (flag) { sort(b.begin(), b.end()); b.resize(unique(b.begin(), b.end()) - b.begin()); n = b.size(); } solve(); cout << mx << '\n'; }
#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...