Submission #711306

#TimeUsernameProblemLanguageResultExecution timeMemory
711306kostia244Team Contest (JOI22_team)C++17
73 / 100
2054 ms8524 KiB
#include<bits/stdc++.h> #define all(x) begin(x), end(x) using namespace std; using ll = long long; const int inf = 1<<28; int main() { cin.tie(0)->sync_with_stdio(0); int n; cin >> n; vector<array<int, 3>> a(n); vector<int> Y, yid(n), A(n, -inf), B(n, inf); for(auto &[x, y, z] : a) { cin >> x >> y >> z; Y.push_back(y); } sort(all(a)); a.erase(unique(all(a)), a.end()); sort(all(Y)); Y.erase(unique(all(Y)), Y.end()); for(int i = 0; i < n; i++) yid[i] = lower_bound(all(Y), a[i][1]) - Y.begin(); n = a.size(); auto add = [&](int i) { int y_id = yid[i]; int z = a[i][2]; B[y_id] = min(B[y_id], z); A[y_id] = max(A[y_id], z); }; auto query = [&](int ly, int z) { int ans = -inf; int zmax = -inf; for(int i = 0; i < Y.size(); i++) { if(zmax > z && i > ly && (zmax > B[i])) { ans = max(ans, zmax + Y[i]); } zmax = max(zmax, A[i]); } return ans; }; int ans = -1; for(int j = 0, i = 0; i < n; i++) {//z while(a[j][0] < a[i][0]) { add(j++); } ans = max(ans, a[i][0] + query(yid[i], a[i][2])); } cout << ans << '\n'; }

Compilation message (stderr)

team.cpp: In lambda function:
team.cpp:34:26: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   34 |         for(int i = 0; i < Y.size(); i++) {
      |                        ~~^~~~~~~~~~
#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...