Target 3 sum from array sum of 3 terms equal to target and unique triplet

Getting TLE

int main() {

int n,i,x,k=0,target;

cin>>n;
set<int>s;

//saving in set so I have unique nos.

for(i=0;i<n;i++){
	cin>>x;
	s.insert(x);
}

//taking back to array

int a[s.size()];
for(auto itr=s.begin();itr!=s.end();itr++){
	a[k++]=*itr;
}
cin>>target;

sort(a,a+s.size());

// 2 pointer method
for(i=0;i<s.size();i++){
int l=i+1;
int r=n-1;
while(l<r){
if(a[i]+a[l]+a[r]>target){
r–;
}
else if(a[i]+a[l]+a[r]==target){
cout<<a[i]<<", “<<a[l]<<” and "<<a[r]<<endl;
l++;r–;
}
}
}

return 0;

}