40分,map求助(样例过)
查看原帖
40分,map求助(样例过)
484008
狼霜朔又WA了吗楼主2022/7/9 22:10

如题,代码如下:

#include<iostream>
#include<map>
using namespace std;
map<int,bool> M;
map<int,bool>::iterator it; 
int num;
int main(){
	int a,b,msize;
	cin>>num;
	while(cin>>a){
		if(a==1){
			cin>>b;
			msize=M.size();
			M[b]=1;
			if(M.size()==msize) cout<<"Already Exist"<<endl;
		}else if(a==2){
			cin>>b;
			if(M.size()==0) cout<<"Empty"<<endl;
			else{
				if(M.count(b)){
					cout<<b<<endl;
					M.erase(b);
				}else{
					int l,r;
					M[b]=1;
					it=M.find(b);
					it--;
					l=(*it).first;
					it=M.find(b);
					it++;
					r=(*it).first;
					it=M.find(b);
				//	cout<<"lb="<<abs(l-b)<<" rb="<<abs(r-b)<<" ";//
					if(!M.count(r)){
						cout<<l<<endl;
						M.erase(l);
					}else if(!M.count(l)){
						cout<<r<<endl;
						M.erase(r);
					}else if(b-l > r-b){
						cout<<r<<endl;
						M.erase(r);
					}else{
						cout<<l<<endl;
						M.erase(l);
					}
					M.erase(b);
				}
			}
		}
	}
	return 0;
}

2022/7/9 22:10
加载中...