이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include<bits/stdc++.h>
#define f first
#define s second
#define pb push_back
using namespace std;
int main(){
long long n;
cin>>n;
pair<long long, pair<long long,long long> > p[n+1];
multiset<pair<long long,long long> > vx,vy;
for(long long i=1; i<=n; i++){
long long x,y,z;
cin>>x>>y>>z;
p[i]={x, {y,z}};
vx.insert({y, z});
vy.insert({z, y});
}
sort(p+1, p+n+1, greater<pair<long long, pair<long long,long long> > >() );
long long pas=-1;
for(long long i=1; i<=n; i++){
if(vx.find({p[i].s.f, p[i].s.s})!=vx.end()){
vx.erase(vx.find({p[i].s.f, p[i].s.s}));
}
if(vy.find({p[i].s.s, p[i].s.f})!=vy.end()){
vy.erase(vy.find({p[i].s.s, p[i].s.f}));
}
while( (*vx.rbegin()).f==(*vy.rbegin()).s && (*vx.rbegin()).s==(*vy.rbegin()).f){
vx.erase(--vx.end());
vy.erase(--vy.end());
if(!vx.size() || !vy.size()){
break;
}
}
// cout<<"y";
if(!vx.size() || !vy.size()){
break;
}
// cout<<"z";
if((*vx.rbegin()).f<=p[i].s.f || (*vy.rbegin()).f<=p[i].s.s ){
continue;
}
pas=max(pas, p[i].f+(*vx.rbegin()).f+(*vy.rbegin()).f);
}
cout<<pas;
}
# | 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... |