#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin >> n;
int cows[n];
for (int i = 0; i < n; i++) {
cin >> cows[i];
}
int lowBound;
int upBound;
sort(cows, cows + n);
int ans = 0;
for (int i = 0; i < n-2; i++) {
for (int j = i + 1; j < n-1; j++) {
lowBound = lower_bound(cows + j + 1, cows + n, 2 * cows[j] - cows[i]);
upBound = upper_bound(cows + j + 1, cows + n, cows[j] + 2*(cows[j] - cows[i]));
if (lowBound == 9) {
continue;
}
if (upBound == n) {
upBound = n - 1;
}
ans += upBound - lowBound + 1;
}
}
return 0;
}
我收到错误“从int *到int [-fpermissive]的无效转换”。但是,我不知道是什么原因导致的,我看不到使用int应该指向的指针的位置。
(我知道我正在使用不推荐使用的东西,例如#include <bits/stdc++.h>
,并使用命名空间std ;,但是请在您告诉我还有其他更改之前,先帮助解决错误,除非它与错误)
答案 0 :(得分:2)
您应该取消引用迭代器:
v-if="validate"
作为lowBound = *lower_bound(cows + j + 1, cows + n, 2 * cows[j] - cows[i]);
upBound = *upper_bound(cows + j + 1, cows + n, cows[j] + 2*(cows[j] - cows[i]));
返回一个迭代器而不是一个值。