常见的字符串处理方式,详细见注释,记得结果加long long 否则过不去
#include<bits/stdc++.h> using namespace std; const int mod = 99997867; int main(){ long long N,D; int x; while(cin>>N>>D){ vector<long> pos; for(int i = 0; i< N;i++){ cin>>x; pos.push_back(x); } long long res = 0; int left = 0; int right = 2; for(;left<N-2;){ //注意小于n. while(right<N&&pos[right]-pos[left]<=D){ right++; } if(right-left-1>=2){ long long num = right - left -1;//排列组合。 res+= num*(num-1) /2; //跟新结果。 } left++; } cout<<res%mod<<endl; }
return 0;
}
```