refactor(P7988.cpp): 简化代码结构并优化算法实现

移除未使用的头文件和变量,重构主要逻辑为更简洁的树构建算法。使用set代替deque来维护数据结构,提高查找效率。
This commit is contained in:
Zengtudor 2025-10-13 17:35:38 +08:00
parent cb4242a69d
commit 6752cfbb74

View File

@ -1,32 +1,13 @@
#include <cstdint>
#include <cstdio>
#include <deque>
#include <iostream>
#include <istream>
#include <iterator>
#include <set>
#include <utility>
using ll = int64_t;
#define sl static inline
const ll maxn = 2e5+5,inf=1e9;
ll n, a[maxn],ans[maxn],nidx[maxn];
std::deque<ll> sfl,sfg;
std::set<ll> uused;
enum HL{
HI,LO,N
};
sl void dfs(HL f, ll idx, ll nans, ll max, ll min){
//大了
ll nmax = a[idx];
uused.erase(a[idx]);
if(uused.empty()){
ans[a[idx]-1]=nans;
}else if(auto p = uused.lower_bound(min); p==uused.end()){
}
}
const ll maxn = 2e5+5;
ll n,a[maxn],idx[maxn],ls[maxn],rs[maxn];
std::set<ll> s;
int main(){
std::iostream::sync_with_stdio(false);
@ -35,14 +16,24 @@ int main(){
std::cin>>n;
for(ll i=1;i<=n;i++){
std::cin>>a[i];
nidx[a[i]]=i;
uused.emplace(a[i]);
idx[a[i]]=i;
}
uused.erase(a[1]);
dfs(N, 1, 0, -inf, inf);
for(ll i=0;i<=n;i++){
std::cout<<ans[i]<<"\n";
s.insert(a[1]);
for(ll i=2;i<=n;i++){
auto p = s.upper_bound(a[i]);
ll u = 0;
if(p!=s.end()){
u=*p;
}
if(p!=s.begin() && (!u || idx[u]<idx[*std::prev(p)])){
u=*std::prev(p);
}
if(a[i]>u){ //比父亲大
rs[u]=a[i];
}else{
ls[u]=a[i];
}
s.insert(a[i]);
}
}
//TODO
//TODO
}