Two pointers approach

this is one of two pointers question of leetcode.

i am getting run time error in some of the testcases due to the large input can you explain how to overcome those??

here is the code
int numSubseq(vector& nums, int target) {

    int n=nums.size();
    if(n==1 || n==0)
    {
        return 0;
    }
    
    int r=n-1;
    
    sort(nums.begin(),nums.end());
    int i=0;
    long long int res=0;
    while(i<=r)
    {
        int left=nums[i];
        while(left+nums[r]>target)
        {
            r-=1;
        }
         res+=(pow(2,r-i));
         i++;
         res%=1000000007;
    }
    return res;
    
}

};

Do not use pow function for this. Use the fast-power approach(recursion)

Refer this

#define mod 1000000007

class Solution {
public:
    long long power(int a,int b)
    {
        if(b==0) return 1;
        if(b==1) return a;
        long long ans=1;
        
        ans=power(a,b/2);
        if(b&1)  ans=ans*ans*a;
        else ans*=ans;
        return ans%mod;
    }
    
    
    int numSubseq(vector<int>& nums, int target) {
    sort(nums.begin(),nums.end());
    int s=0;int e=nums.size()-1;
    int res=0;
    while(s<=e)
    {
       if(nums[s]+nums[e]<=target)
       {
           //Number of subsequences fixing each element(starting from each element)
           res+=power(2,e-s);
           res%=mod;
           s++;
       }
       else e--;
    }
    return res;
    }
};