求助_ACM题_本机运行没错_提交一直WA
各位大侠,帮忙看一下哪出错了
题目是:
题目描述:
一个复数(x+iy)集合,两种操作作用在该集合上:
1、Pop 表示读出集合中复数模值最大的那个复数,如集合为空 输出 empty ,不为空就输出最大的那个复数并且从集合中删除那个复数,再输出集合的大小SIZE;
2 Insert a+ib 指令(a,b表示实部和虚部),将a+ib加入到集合中 ,输出集合的大小SIZE;
最开始要读入一个int n,表示接下来的n行每一行都是一条命令。
输入:
输入有多组数据。
每组输入一个n(1<=n<=1000),然后再输入n条指令。
输出:
根据指令输出结果。
样例输入:
3
Pop
Insert 1+i2
Pop
样例输出:
empty
SIZE = 1
1+i2
SIZE = 0
提示:
模相等的输出b较小的复数。
a和b都是非负数。
我的代码是:
#include <iostream>#include <algorithm>#include <string>#include <vector>#include <cstdio>using namespace std;struct info{ int x; int y;};bool cmp(const info &a,const info &b){ if((a.x)*(a.x)+(a.y)*(a.y)==(b.x)*(b.x)+(b.y)*(b.y)) return a.y>b.y; else return (a.x)*(a.x)+(a.y)*(a.y)<(b.x)*(b.x)+(b.y)*(b.y);};int main(){ string s,t; char q[1000]; int n; vector<info> v; info in; while(cin>>n) { getchar(); while(n--) { gets(q); t=q; if(t[0]=='I') { in.x=t[7]-'0'; in.y=t[10]-'0'; v.push_back(in); sort(v.begin(),v.end(),cmp); cout<<"SIZE = "<<v.size()<<endl; } else { if(v.size()==0) cout<<"empty"<<endl; else { vector<info>::iterator it=v.end(); it--; cout<<(*it).x<<"+i"<<(*it).y<<endl; v.erase(it); cout<<"SIZE = "<<v.size()<<endl; } } } v.clear(); }}
scanf("%s", str);if (str[0] = 'I'){scanf("%d+i%d",&in.x,&in.y);}else{}