本地测试没有问题,一提交就re了,说我访问了非法的内存,但我似乎没有看到越界的地方。求大佬看看
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 2e6 + 5;
using ll = long long;
ll ps[N];
int n;
int search(int l, int r, ll a){
if(l > r) return -1;
int mid = l + r >> 1;
if(ps[mid] - a == n) return mid;
else if(ps[mid]- a > n) search(l, mid - 1, a);
else if(ps[mid]- a < n) search(mid + 1, r, a);
}
int main(){
cin >> n;
for(int i = 1; i <= n; ++i) ps[i] = ps[i - 1] + i;
for(int i = 1; i <= n; ++i){
int j = search(i + 1, n + 1, ps[i - 1]);
if(j == -1) continue;
cout << i << " " << j << endl;
}
return 0;
}