- 题目描述:
-
一个复数(x+iy)集合,两种操作作用在该集合上:
1、Pop 表示读出集合中复数模值最大的那个复数,如集合为空 输出 empty ,不为空就输出最大的那个复数并且从集合中删除那个复数,再输出集合的大小SIZE;
2 Insert a+ib 指令(a,b表示实部和虚部),将a+ib加入到集合中 ,输出集合的大小SIZE;
最开始要读入一个int n,表示接下来的n行每一行都是一条命令。
- 输入:
-
输入有多组数据。
每组输入一个n(1<=n<=1000),然后再输入n条指令。
- 输出:
-
根据指令输出结果。
- 样例输入:
-
3PopInsert 1+i2Pop
- 样例输出:
-
emptySIZE = 11+i2SIZE = 0
- 提示:
-
模相等的输出b较小的复数。
a和b都是非负数。
#include#include #include using namespace std;int a[1000],b[1000],c[1000];int number=0;void pop(){ int i,max=c[0],maxi=0,maxb=b[0]; if(number==0) printf("empty\n"); else { for(i=0;i b[i]){ maxb=b[i]; maxi=i; } } } i--; printf("%d+i%d\n",a[i],b[i]); number--; printf("SIZE = %d\n",number);}}void insert(int x,int y){ a[number]=x; b[number]=y; c[number]=x*x+y*y; number++; printf("SIZE = %d\n",number);}int main(){ int n,i; char m[10],p[10]; while(scanf("%d",&n)!=EOF){ for(i=0;i