map,爆零求原因
查看原帖
map,爆零求原因
483209
abcddca楼主2023/8/6 08:04
#include <bits/stdc++.h>
using namespace std;
map<int, int> k;
int n, i, j, m, l, maxx, minn = 99999;
string s1;
int a, b;

int main() {
	scanf("%d", &n) ;
	i = 1;
	while (i <= n) {
		scanf("%d%d", &j, &a) ;
		if (j == 1) {
			k[a] = i;
			minn = min(minn, a);
			maxx = max(maxx, a);
		}
		if (j == 2) {
			if (k.empty()) {
				printf("Empty");
			} else {

				if (k.count(a)) {
					printf("%d", a);
					k.erase(a );
				} else {
					for (int i = a; i >= minn; i--) {
						if (k.count(i)) {
							b++;
							printf("%d", i);
							k.erase(i );
							break;
						}
					}
					if (!b) {
						for (int i = a; i <= maxx; i++) {
							if (k.count(i)) {
								b--;
								printf("%d", i);
								k.erase(i );
								break;
							}
						}
					}
				}
				b = 0;
			}
			cout  << endl;
		}
		i++;
	}
	return 0;
}

新手蒟蒻,看不懂别骂

2023/8/6 08:04
加载中...