#include<stdio.h> #include<stdlib.h> struct node { int data,leftnum,rightnum; node *left,*right; }; void insert(node *a,node *b) { if(a->data>b->data) { if(!a->left)a->left=b; else insert(a->left,b); a->leftnum++; } else { if(!a->right)a->right=b; else insert(a->right,b); a->rightnum++; } } int findmid(node *root,int n) { if(n-1==root->leftnum) return root->data; else if(n-1>root->leftnum)return findmid(root->right,n-root->leftnum-1); else return findmid(root->left,n); } main() { int n,k,m; while(~scanf("%d",&n)) { if(!n)break; k=1; double t; n--; node *root=(node*)malloc(sizeof(node)); scanf("%d%d",&m,&root->data),root->left=0,root->right=0,root->leftnum=0,root->rightnum=0; while(n--) { scanf("%d",&m); if(m==1) { k++; node *p=(node*)malloc(sizeof(node)); scanf("%d",&p->data),p->left=0,p->right=0,p->leftnum=0,p->rightnum=0; insert(root,p); } else if(m==2) { if(k%2)t=findmid(root,(k+1)/2),printf("%.1lf\n",t); else t=findmid(root,k/2)+findmid(root,k/2+1),printf("%.1lf\n",t/2); } } } }
转载于:https://www.cnblogs.com/dokc/archive/2012/10/18/2729424.html