Submission #1244352

#TimeUsernameProblemLanguageResultExecution timeMemory
1244352emad234Team Contest (JOI22_team)C++20
100 / 100
155 ms14676 KiB
#include "bits/stdc++.h"
#define F first
#define S second
#define ll long long
#define pii pair<ll,ll>
const ll mxN = 3e5 + 5;
const ll mod = 1e9 + 7;
using namespace std;
struct player{
  ll x,y,z,id;
};
bool cmpx(player a, player b){
  return make_pair(a.x,a.id) < make_pair(b.x,b.id);
}
bool cmpy(player a, player b){
  return make_pair(a.y,a.id) < make_pair(b.y,b.id);
}
bool cmpz(player a, player b){
  return make_pair(a.z,a.id) < make_pair(b.z,b.id);
}
player calc(player a, player b,player c){
  if(a.y >= b.y) return a;
  if(a.z >= c.z) return a;
  if(b.x >= a.x) return b;
  if(b.z >= c.z) return b;
  if(c.x >= a.x) return c;
  if(c.y >= b.y) return c;
  return {0,0,0,0};
}
player a[mxN],b[mxN],c[mxN];
bool vis[mxN];
signed main(){
  ll n;
  cin >>n;
  ll N;
  for(ll i = 1;i <= n;i++){
    cin >>a[i].x>> a[i].y>> a[i].z;
    a[i].id = i;
    b[i] = c[i] = a[i];
    // N = max({a[i].x,a[i].y,a[i].z,N});
  }
  sort(a + 1,a + n + 1,cmpx);
  sort(b + 1,b + n + 1,cmpy);
  sort(c + 1,c + n + 1,cmpz);
  int i = n,j = n,k = n;
  while(i && j && k){
    while(i && vis[a[i].id]) i--;
    while(j && vis[b[j].id]) j--;
    while(k && vis[c[k].id]) k--;
    // cout<<"A "<<i<<": "<<a[i].x<<' '<<a[i].y<<' '<<a[i].z<<' '<<a[i].id<<'\n';
    // cout<<"B "<<j<<": "<<b[j].x<<' '<<b[j].y<<' '<<b[j].z<<' '<<b[j].id<<'\n';
    // cout<<"C "<<k<<": "<<c[k].x<<' '<<c[k].y<<' '<<c[k].z<<' '<<c[k].id<<'\n';
    if(!i || !j || !k) break;
    auto x = calc(a[i],b[j],c[k]);
    if(x.id == 0){
      cout<<a[i].x + b[j].y + c[k].z;
      return 0;
    }
    // cout<<"X : "<<x.x<<' '<<x.y<<' '<<x.z<<' '<<x.id<<'\n';
    vis[x.id] = 1;
  }
  cout<<-1;
}
#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...