1400*D. Divide by three, multiply by two

1400*D. Divide by three, multiply by two_第1张图片

 题意:

        一个序列,每个数都是前一个数乘2或者除3,打乱之后,需要你排出原来的序列。

        queue和deque模拟

#include
using namespace std;
typedef long long ll;
const int N=1e5+5;
ll n,a[N];
queueq;
dequeres;
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<

你可能感兴趣的:(codeforces,算法,c++,c语言,队列,双端队列)