fork(1) download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define ll long long int
  4. #define mp make_pair
  5.  
  6. vector<pair<ll,ll> > a;
  7. ll parent[100010];
  8. ll arr[100020];
  9. void reset(int n)
  10. {
  11. a.clear();
  12. for(int i=0;i<=n;i++)
  13. parent[i]=i;
  14.  
  15. }
  16.  
  17. ll find_set(ll parent[],ll p)
  18. {
  19. if(p!=parent[p])
  20. parent[p]=find_set(parent,parent[p]);
  21. return parent[p];
  22. }
  23.  
  24.  
  25. int main()
  26. {
  27. //int t;
  28. //cin>>t;
  29. //while(t--)
  30. //{
  31. ll i,j,ans=0,t1,t2,n,k,q,pa=0,pb=0;
  32. cin>>n>>k>>q;
  33. reset(n);
  34. for(i=1;i<=n;i++)
  35. {
  36. cin>>arr[i];
  37. a.push_back(mp(arr[i],i));
  38. }
  39. sort(a.begin(),a.end());
  40.  
  41. for(i=1;i<a.size();i++)
  42. {
  43. if((a[i].first-a[i-1].first)<=k)
  44. parent[a[i-1].second]=a[i].second;
  45. }
  46.  
  47. while(q--)
  48. {
  49. cin>>t1>>t2;
  50. pa=find_set(parent,t1);
  51. pb=find_set(parent,t2);
  52. if(pa!=pb) cout<<"No\n";
  53. else cout<<"Yes\n";
  54. }
  55.  
  56.  
  57. // }
  58. return 0;
  59. }
  60.  
Success #stdin #stdout 0s 4796KB
stdin
5 3 3
0 3 8 5 12
1 2
1 3
2 5
stdout
Yes
Yes
No