为啥一直超时啊感觉没有死循环,时间复杂度也还好
查看原帖
为啥一直超时啊感觉没有死循环,时间复杂度也还好
1198167
yezifenghua_coding楼主2024/8/21 21:39

#include #include #include #define int long long using namespace std; const int M = 1e5; int qm[M]; int m, n;

signed main() { scanf("%d %d", &m, &n); for (int i = 0; i < m; i++) { scanf("%d", &qm[i]); } sort(qm, qm + m); int total = 0; int x; while (n--) { scanf("%d", &x); int l = 0, r = m - 1; while (l != r - 1) { int mid = l + r >> 1; if (qm[mid] >= x) r = mid; else l = mid + 1; } int a = abs(qm[l] - x); int b = abs(qm[r] - x); total += (a < b) ? a : b; } cout << total << endl; return 0;```cpp #include #include #include #define int long long using namespace std; const int M = 1e5; int qm[M]; int m, n;

signed main() { scanf("%d %d", &m, &n); for (int i = 0; i < m; i++) { scanf("%d", &qm[i]); } sort(qm, qm + m); int total = 0; int x; while (n--) { scanf("%d", &x); int l = 0, r = m - 1; while (l != r - 1) { int mid = l + r >> 1; if (qm[mid] >= x) r = mid; else l = mid + 1; } int a = abs(qm[l] - x); int b = abs(qm[r] - x); total += (a < b) ? a : b; } cout << total << endl; return 0; }


}
2024/8/21 21:39
加载中...