#include <bits/stdc++.h>
using namespace std;
int n,a,sum,ret,res;
vector<int> v;
int main(){
cin >> n;
for(int i = 0; i <n; i++){
cin >> a;
v.push_back(a);
}
cin >> res;
sort(v.begin(), v.end());
int lo = 0;
int hi = v.size() - 1;
while(1){
sum = v[lo] + v[hi];
if(sum > res) hi--;
else if(sum <= res) lo++;
if(hi < lo) break;
if(sum == res) ret++;
}
cout << ret << '\n';
}
두 수 라는 말과 연속적인 idx? 느낌이면 투 포인터로 접근해보자 입력 값을 정렬한 후 처음과 끝을 포인터로 가리키고 원하는 입력 값보다 두 수의 합이 크면 hi를 내리고 작으면 lo를 올린다. 입력 값과 두 수의 합이 같으면 ret++해서 ret 출력
투 포인터라는 것만 인지했으면 바로 풀 수 있던 문제