This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
int main()
{
cin.tie(nullptr)->sync_with_stdio(0);
int n;
cin >> n;
vector<int> x(n + 1), y(n + 1), z(n + 1);
for(int i = 1; i <= n; i++) {
cin >> x[i] >> y[i] >> z[i];
}
vector<int> px(n + 1), py(n + 1), pz(n + 1);
for(int i = 1; i <= n; i++) {
px[i] = i;
py[i] = i;
pz[i] = i;
}
sort(px.begin() + 1, px.end(), [&](int i, int j) {
return x[i] < x[j];
});
sort(py.begin() + 1, py.end(), [&](int i, int j) {
return y[i] < y[j];
});
sort(pz.begin() + 1, pz.end(), [&](int i, int j) {
return z[i] < z[j];
});
vector<bool> used(n + 1);
int tx = n, ty = n, tz = n;
while(tx != 0 && ty != 0 && tz != 0) {
int mx = x[px[tx]], my = y[py[ty]], mz = z[pz[tz]];
int cntx = 1 + (y[px[tx]] == my) + (z[px[tx]] == mz);
int cnty = 1 + (z[py[ty]] == mz) + (x[py[ty]] == mx);
int cntz = 1 + (x[pz[tz]] == mx) + (y[pz[tz]] == my);
if(cntx >= 2) {
used[px[tx]] = true;
tx--;
}
else if(cnty >= 2) {
used[py[ty]] = true;
ty--;
}
else if(cntz >= 2) {
used[pz[tz]] = true;
tz--;
}
else {
cout << mx + my + mz << '\n';
exit(0);
}
while(tx != 0 && used[px[tx]])
tx--;
while(ty != 0 && used[py[ty]])
ty--;
while(tz != 0 && used[pz[tz]])
tz--;
}
cout << "-1\n";
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |