0分求助!!!
查看原帖
0分求助!!!
1041720
zhangxinwei_dl楼主2024/3/30 14:30
#include<bits/stdc++.h>
using namespace std;
set <int> s;
int main() {
    int n; cin >> n;
    while (n--) {
    	int a; cin >> a;
    	if (a == 1) {
    		int tmp; cin >> tmp;
    		int sb = s.size(); // size before
    		s.insert(tmp);
    		int sn = s.size(); // size now
    		if (sn == sb) {
    			cout << "Already Exist" << endl;
    		}
    	}
    	else {
    		if (s.empty()) { //如果为空
    			cout << "Empty\n";
    			continue;
    		}
    		int tmp; cin >> tmp;
    		auto it = s.find(tmp);
    		if (*it == tmp) { //找到了就输出并结束本轮
    			s.erase(*it);
    			cout << tmp << endl;
    			continue;
    		}
    		auto minn = s.begin();
    		for (auto it = s.begin(); it != s.end(); it++) {
    			// if (*it > tmp+*minn) {
    				// break;
    			// }
    			if (abs(*it-tmp) < abs(*minn-tmp)) { //判断差值,哪个小用哪个
    				minn = it;
    				continue;
    			}
    			if (abs(*it-tmp) == abs(*minn-tmp)) { //如果一样
    				if (*minn > *it) { //取最小的那个
    					minn = it;
    				}
    			}
    		}
    		cout << *minn << endl;
    		s.erase(*minn);
    		
    	}
    }
    return 0;
}

样例能过,但5个测试点全wa

2024/3/30 14:30
加载中...