fork download
  1. /*AUTHOR: kriskhundu */
  2.  
  3. #include<bits/stdc++.h>
  4. using namespace std;
  5.  
  6. #define FOR(i,a,b) for(int i=a;i<b;i++)
  7. #define FORD(i,a,b) for(int i=a;i>=b;i--)
  8. #define REP(i,n) FOR(i,0,n)
  9. #define PB push_back
  10. #define ITER(i,a) for( typeof(a.begin()) i=a.begin();i!=a.end();i++)
  11. #define mod 1000000007
  12. #define MAXN 1000010
  13. #define MEM(a,b) memset(a,(b),sizeof(a))
  14. #define MP make_pair
  15. #define INF mod
  16.  
  17. typedef vector<int> VI;
  18. typedef long long LL;
  19. typedef list<int> LI;
  20.  
  21. int main()
  22. {
  23. int N,K,P;
  24. scanf("%d %d %d",&N,&K,&P);
  25. int arr[N],index[N][2];/*index array stores the relation between a
  26. coordinate and its index*/
  27. //
  28. REP(i,N){
  29.  
  30. scanf("%d",&arr[i]);
  31. index[i][1]=arr[i];
  32. }
  33. //
  34. sort(arr,arr+N);
  35. REP(i,P){
  36.  
  37. int temp1,temp2,A,B;
  38. scanf("%d %d",&temp1,&temp2);
  39.  
  40. if(index[temp1-1][1]<=index[temp2-1][1]){
  41.  
  42. A=index[temp1-1][1],B=index[temp2-1][1];
  43. }
  44. else{
  45.  
  46. B=index[temp1-1][1],A=index[temp2-1][1];
  47. }
  48. int flag=0;
  49. //
  50. for(int i=0;i<N;i++){
  51.  
  52. if(arr[i]==A){
  53.  
  54. flag=1;continue;
  55. }
  56. if(flag==1){
  57.  
  58. if(arr[i]-arr[i-1]>K){
  59.  
  60. flag=0;break;
  61. }
  62. }
  63. if(arr[i]==B){
  64.  
  65. break;
  66. }
  67. }
  68. //
  69. if(flag==1){
  70.  
  71. printf("Yes\n");
  72. }
  73. else{
  74.  
  75. printf("No\n");
  76. }
  77. }
  78.  
  79. }
Success #stdin #stdout 0s 16064KB
stdin
5 3 1
1 3 12 1 12
1 4
stdout
No