| Run ID | 作者 | 问题 | 语言 | 测评结果 | 时间 | 内存 | 代码长度 | 提交时间 |
|---|---|---|---|---|---|---|---|---|
| 92000 | sh25_shenpy | 链表查找(线性表) | C++ | 无测评数据 | 0 MS | 0 KB | 1107 | 2026-06-21 11:46:29 |
#include <iostream> #include <vector> using namespace std; int main() { int x, n; cin >> x >> n; vector<int> a(n); for (int i = 0; i < n; ++i) { cin >> a[i]; } // 二分查找 int l = 0, r = n - 1; int pos = -1; while (l <= r) { int mid = (l + r) / 2; if (a[mid] == x) { pos = mid; break; } else if (a[mid] < x) { l = mid + 1; } else { r = mid - 1; } } if (pos != -1) { // 找到,和后继交换 cout << "yes" << endl; if (pos < (int)a.size() - 1) { swap(a[pos], a[pos + 1]); } } else { // 没找到,输出 no 并插入 cout << "no" << endl; int p; for (p = 0; p < (int)a.size(); ++p) { if (a[p] > x) break; } a.insert(a.begin() + p, x); } // 输出 for (int i = 0; i < (int)a.size(); ++i) { if (i > 0) cout << " "; cout << a[i]; } cout << endl; return 0; }