Dynamic basic prob FROGV

#include <bits/stdc++.h>

using namespace std;

#define maxN 100001

int main()

{

vector<long long> pos(maxN);

ios_base::sync_with_stdio(false);

cin.tie(NULL);

int n, p;

long long k;

long long x;

cin >> n >> k >> p;

long long arr[n];

bool bool_arr[n];

for (int i = 0; i < n; i++)

{

    cin >> x;

    pos.at(i) = x;

    arr[i] = x;

    bool_arr[i] = true;

}

sort(arr, arr + n);

for (int i = 1; i < n; i++)

{

    if ((arr[i] - arr[i - 1]) > k)

    {

        bool_arr[i] = false;

    }

}

while (p--)

{

    bool sys = true;

    long long fp, sp;

    cin >> fp >> sp;

    fp--;

    sp--;

    long long k;

    long long p;

    if (pos[fp] < pos[sp])

    {

        k = fp;

        p = sp;

    }

    else

    {

        k = sp;

        p = fp;

    }

    for (int i = 0; i < n; i++)

    {

        if (sys)

        {

            if (pos[k] == arr[i])

            {

                for (int j = i + 1; j < n; j++)

                {

                    if (bool_arr[j] == false)

                    {

                        cout << "No" << endl;

                        sys = false;

                        break;

                    }

                    else if (pos[p] == arr[j])

                    {

                        cout << "Yes" << endl;

                        sys = false;

                        break;

                    }

                }

            }

        }

        else

        {

            break;

        }

    }

}

return 0;

}

Dont know where i am wrong please help…