`


#include <stdio.h>
enum {
	the_size = 100010
};
class FIBO_TREE {
	private : 
		struct TREE {
			int lid, rid, pid;
			int key;
			int cnt;
		} tree[the_size];
		int ROOT, tot;
		int stk[the_size], top;
		#define lid(id) tree[id].lid
		#define rid(id) tree[id].rid
		#define pid(id) tree[id].pid
		void ph(int id) {
			if(top == 3) {
				if(rid(stk[top-1]) == stk[top]&&rid(stk[top-2]) == stk[top-1]) {
					if(!lid(stk[top-2])&&!lid(stk[top-1])) {
						lid(stk[top-1]) = stk[top-2];
						stk[top-2] = stk[top-1];
						stk[top-1] = stk[top];
						top--;
					}
				} else if(lid(stk[top-1]) == stk[top]&&lid(stk[top-2]) == stk[top-1]) {
					if(!rid(stk[top-2])&&!rid(stk[top-1])) {
						rid(stk[top-1]) = stk[top-2];
						stk[top-2] = stk[top-1];
						stk[top-1] = stk[top];
						top--;
					}
				}
			}
			if(top > 3) {
				if(rid(stk[top-1]) == stk[top]&&rid(stk[top-2]) == stk[top-1]) {
					if(!lid(stk[top-2])&&!lid(stk[top-1])) {
						if(stk[top-2] == lid(stk[top-3])) 
							lid(stk[top-3]) = stk[top-1];
						else 
							rid(stk[top-3]) = stk[top-1];
						lid(stk[top-1]) = stk[top-2];
						stk[top-2] = stk[top-1];
						stk[top-1] = stk[top];
						top--;
					}
				} else if(lid(stk[top-1]) == stk[top]&&lid(stk[top-2]) == stk[top-1]) {
					if(!rid(stk[top-2])&&!rid(stk[top-1])) {
						if(stk[top-2] == lid(stk[top-3])) 
							lid(stk[top-3]) = stk[top-1];
						else 
							rid(stk[top-3]) = stk[top-1];
						rid(stk[top-1]) = stk[top-2];
						stk[top-2] = stk[top-1];
						stk[top-1] = stk[top];
						top--;
					}
				}
			}
			if(top == 4) {
				if(lid(stk[top-3]) == stk[top-2]&&rid(stk[top-2]) == stk[top-1]&&lid(stk[top-1]) == stk[top]) {
					if(!rid(stk[top-1])) {
						lid(stk[top-1]) = stk[top-2];
						rid(stk[top-1]) = stk[top-3];
						rid(stk[top-2]) = stk[top];
						lid(stk[top-3]) = 0;
						stk[top-3] = stk[top-1];
						stk[top-1] = stk[top];
						top--;
					}
				} else if(rid(stk[top-3]) == stk[top-2]&&lid(stk[top-2]) == stk[top-1]&&rid(stk[top-1]) == stk[top]) {
					if(!lid(stk[top-1])) {
						rid(stk[top-1]) = stk[top-2];
						lid(stk[top-1]) = stk[top-3];
						lid(stk[top-2]) = stk[top];
						rid(stk[top-3]) = 0;
						stk[top-3] = stk[top-1];
						stk[top-1] = stk[top];
						top--;
					}
				}
			}
			if(top > 4) {
				if(lid(stk[top-3]) == stk[top-2]&&rid(stk[top-2]) == stk[top-1]&&lid(stk[top-1]) == stk[top]) {
					if(!rid(stk[top-1])) {
						if(lid(stk[top-4]) == stk[top-3]) 
							
						lid(stk[top-1]) = stk[top-2];
						rid(stk[top-1]) = stk[top-3];
						rid(stk[top-2]) = stk[top];
						lid(stk[top-3]) = 0;
						stk[top-3] = stk[top-1];
						stk[top-1] = stk[top];
						top--;
					}
				} else if(rid(stk[top-3]) == stk[top-2]&&lid(stk[top-2]) == stk[top-1]&&rid(stk[top-1]) == stk[top]) {
					if(!lid(stk[top-1])) {
						rid(stk[top-1]) = stk[top-2];
						lid(stk[top-1]) = stk[top-3];
						lid(stk[top-2]) = stk[top];
						rid(stk[top-3]) = 0;
						stk[top-3] = stk[top-1];
						stk[top-1] = stk[top];
						top--;
					}
				}
			}
		}
};
signed main() {
	
}

原创文章,作者:306829225,如若转载,请注明出处:https://blog.ytso.com/268064.html

(0)
上一篇 2022年6月19日
下一篇 2022年6月19日

相关推荐

发表回复

登录后才能评论