AcWing 800. 数组元素的目标和 https://www.acwing.com/problem/content/description/802/
为什么我的代码要比模版运行慢很多?
我的代码(520ms)
#include<iostream>
using namespace std;
const int N = 1e5+10;
int n,m,x;
int A[N],B[N];
int main() {
cin >> n >> m >> x;
for(int i = 0; i < n; i++) cin >> A[i];
for(int i = 0; i < m; i++) cin >> B[i];
int i = 0, j = m - 1;
while (i < n && j >= 0) {
if (A[i] + B[j] > x) {
j--; // 减小j,以减小总和
} else if (A[i] + B[j] < x) {
i++; // 增加i,以增加总和
} else {
// 找到一对满足条件的i和j
cout << i << " " << j << endl;
return 0; // 如果只需要找到一对即可退出
}
}
return 0;
}
模板(120ms)
#include <iostream>
using namespace std;
const int N = 1e5 + 10;
int n, m, x;
int a[N], b[N];
int main()
{
scanf("%d%d%d", &n, &m, &x);
for (int i = 0; i < n; i ++ ) scanf("%d", &a[i]);
for (int i = 0; i < m; i ++ ) scanf("%d", &b[i]);
for (int i = 0, j = m - 1; i < n; i ++ )
{
while (j >= 0 && a[i] + b[j] > x) j -- ;
if (j >= 0 && a[i] + b[j] == x) cout << i << ' ' << j << endl;
}
return 0;
}
main函数最前面加上这两句试试:
ios::sync_with_stdio(0);
cin.tie(0), cout.tie(0);
加上这两句话就没问题了,谢谢哈。
原因scanf比cin快。