题意:
一个序列,每个数都是前一个数乘2或者除3,打乱之后,需要你排出原来的序列。
queue和deque模拟
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e5+5;
ll n,a[N];
queue<ll>q;
deque<ll>res;
int main(){
scanf("%lld",&n);
for(int i=1;i<=n;i++){
scanf("%lld",&a[i]);
q.push(a[i]);
}
while(q.size()){
ll t=q.front();
q.pop();
if(res.size()==0) res.push_back(t);
else{
ll hh=res.front();
ll rr=res.back();
if(t*2==hh||hh*3==t) res.push_front(t);
else if(rr*2==t||t*3==rr) res.push_back(t);
else q.push(t);
}
}
for(auto it:res) cout<<it<<" ";
return 0;
}