代码如下
//问题出在第30行
#include<iostream>
#include<algorithm>
using namespace std;
const int maxn = 5e4 + 100;
int n, k;
int z[maxn];
int ans1, ans2;
int ans;
struct node{
int r;
int cnt;
};
node num[maxn];
int main(){
cin >> n >> k;
for(int i = 0; i < n; i++){
scanf("%d", &z[i]);
}
sort(z, z + n);
int l1 = 0, r1 = 0, l2 = 0, r2 = 0;
while(l1 <= r1 && r1 <= n){
if(z[r1] - z[l1] <= k) r1++;
else{
num[l1].r = r1;//问题出在这两行 这两行没起作用
num[l1].cnt = r1 - l1;
l1++;
cout << "r1: " << r1 << " cnt : " << r1 - l1 << endl; // 这两行是调试语句
cout << l1 << " : " << num[l1].r << " cnt : "<< num[l1].cnt << endl;
}
}
return 0;
}
输入:
7 3
10
5
1
12
9
5
14
输出:
r1: 1 cnt : 0
1 : 0 cnt : 0
r1: 3 cnt : 1
2 : 0 cnt : 0
r1: 3 cnt : 0
3 : 0 cnt : 0
r1: 6 cnt : 2
4 : 0 cnt : 0
r1: 6 cnt : 1
5 : 0 cnt : 0
可以看出 r1与r1 - l1的值没有问题 所以第30,31行的赋值语句
num[l1].r = r1;
num[l1].cnt = r1 - l1;
并没有起作用
这是因为什么呢 萌新求大佬解答