社区讨论
使用Set做的,样例过但是3WA 2TLE
P5250【深基17.例5】木材仓库参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @lqrudix9
- 此快照首次捕获于
- 2023/12/30 17:09 2 年前
- 此快照最后确认于
- 2023/12/30 19:47 2 年前
C
#include <bits/stdc++.h>
using namespace std;
set<long> sets;
int main() {
long n = 0;
cin >> n;
for (long i = 1; i <= n; i++) {
long a, b;
cin >> a >> b;
//Input
if (a == 1) {
if (sets.find(b) == sets.end())
sets.insert(b);
else
cout << "Already Exist" << endl;
}
//Output
if (a == 2) {
if (sets.empty()) {
cout << "Empty" << endl;
} else {
//Find
if (sets.find(b) != sets.end()) {
cout << b << endl;
sets.erase(b);
}
else {
long record_1 = 0;
long record_2 = 0;
//往左
for (long i = b - 1; i >= 1; i--) {
if (sets.find(i) != sets.end()) {
record_1 = i;
break;
}
}
//往右
for (long i = b + 1; i <= *sets.rbegin(); i++) {
if (sets.find(i) != sets.end()) {
record_2 = i;
break;
}
}
//判断谁最接近, 当一样接近时,输出短的那个
if (abs(b - record_1) <= abs(record_2 - b)) {
cout << record_1 << endl;
sets.erase(record_1);
} else {
cout << record_2 << endl;
sets.erase(record_2);
}
}
}
}
}
return 0;
}
样例可以过,但是提交是前3个WA 后面俩个TLE
求大佬帮助
回复
共 1 条回复,欢迎继续交流。
正在加载回复...