这道题目调了7天了没调出来,麻烦各位大神看一看,谢谢!
#include<bits/stdc++.h>
#define N 100009
using namespace std;
typedef long long ll;
ll n,x[N];
struct edge{
ll x,id;
bool operator<(const edge&a) const{return x>a.x;}
};
set<edge> s;
map<ll,ll> m;
vector<ll> v;
int main(){
cin>>n;
for(ll i=1;i<=n;++i){cin>>x[i];s.insert((edge){x[i],i});m[i]=x[i];}
while(!s.empty()){
edge x=(*s.begin());
v.push_back(x.x);v.push_back(m[x.id+1]);
s.erase((edge){m[x.id+1],x.id+1});s.erase((edge){x.x,x.id});
}
for(ll i=0;i<v.size()-1;++i) cout<<v[i]<<" ";
cout<<v[v.size()-1];
return 0;
}