안녕하세요. 오늘은 개수를 셀 거에요.
https://www.acmicpc.net/problem/6159
그냥 upper_bound로 안되는 부분을 찾고 나머지를 세서 출력해주면 됩니다.
#include <iostream>
#include <algorithm>
#define ll long long
using namespace std;
int main(void)
{
ios_base::sync_with_stdio(false); cin.tie(NULL);
ll N, S, i, arr[20202] = { 0 }, cnt = 0;
cin >> N >> S;
for (i = 1; i <= N; i++) cin >> arr[i];
sort(arr + 1, arr + N + 1);
for (i = 1; i <= N; i++)
{
ll idx = upper_bound(arr + 1, arr + N + 1, S - arr[i]) - arr;
if (idx <= i) break;
cnt += idx - i - 1;
}
cout << cnt;
}
감사합니다.