Submission #799569

#TimeUsernameProblemLanguageResultExecution timeMemory
799569eltu0815Team Contest (JOI22_team)C++14
100 / 100
95 ms18732 KiB
#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 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...