값이 중복되지 않게 예외 처리를 해줘야 하는데 이 점을 내가 간과해서 꽤나 애를 먹었다.
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
ios_base::sync_with_stdio(false);cin.tie(NULL); cout.tie(NULL);
int n;
cin>>n;
int arr[10000];
for(int i=0; i<n; i++){
cin>>arr[i];
}
sort(arr,arr+n);
long long cnt=0;
for(int i=0; i<n-2; i++){
for(int j=i+1; j<n-1; j++){
int tmp = arr[i] + arr[j];
int lower = lower_bound(arr +(j+1), arr + n, -tmp) - arr;
int upper = upper_bound(arr+(j+1), arr + n, -tmp) - arr;
cnt += upper - lower ;
}
}
cout<<cnt;
return 0;
}