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>
#define MAX 600005
#define MOD (ll)(998244353)
#define INF (ll)(1e18)
using namespace std;
typedef long long ll;
typedef pair<ll, ll> pll;
ll n, m, k, tt;
struct INFO {
ll a, b, c;
} arr[MAX];
vector<pll> a, b, c;
ll used[MAX];
int main()
{
ios::sync_with_stdio(false);
cin.tie(NULL);
cin >> n;
for(ll i = 1; i <= n; ++i) cin >> arr[i].a >> arr[i].b >> arr[i].c;
for(ll i = 1; i <= n; ++i) a.push_back({arr[i].a, i});
for(ll i = 1; i <= n; ++i) b.push_back({arr[i].b, i});
for(ll i = 1; i <= n; ++i) c.push_back({arr[i].c, i});
sort(a.begin(), a.end(), greater<pll>());
sort(b.begin(), b.end(), greater<pll>());
sort(c.begin(), c.end(), greater<pll>());
ll p = 0, q = 0, r = 0;
while(p < n && q < n && r < n) {
ll i = a[p].second, j = b[q].second, k = c[r].second;
if(used[i]) { ++p; continue; }
if(used[j]) { ++q; continue; }
if(used[k]) { ++r; continue; }
if(arr[i].b >= arr[j].b || arr[i].c >= arr[k].c) { used[i] = 1; continue; }
if(arr[j].a >= arr[i].a || arr[j].c >= arr[k].c) { used[j] = 1; continue; }
if(arr[k].a >= arr[i].a || arr[k].b >= arr[j].b) { used[k] = 1; continue; }
cout << arr[i].a + arr[j].b + arr[k].c;
return 0;
}
cout << -1;
return 0;
}
# | 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... |