Advertisement
Niloy007

Exit or not exit

Jun 7th, 2020
199
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.10 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #define max 1000000
  3. #define pb push_back
  4. #define pairs pair<int, int>
  5. #define vi vector<int>
  6. #define vb vector<bool>
  7. #define vii vector<pairs>
  8. #define lb lower_bound
  9. #define ub upper_bound
  10. #define lli long long int
  11. #define endl '\n'
  12. #define FastInput ios_base::sync_with_stdio(false), cin.tie(NULL);
  13. #define Cases  cout << "Case " << ++Case << ": ";
  14. #define __test int tt; int Case=0; cin >> tt; while(tt--)
  15. #define read(x) freopen(x, "r", stdin)
  16. #define write(x) freopen(x, "w", stdout)
  17. #define InputArray(a,n) for(int i=0;i<n;i++) cin >> a[i];
  18. #define CopyArray(a,temp,n) for(int i=0;i<n;i++) temp[i]=a[i];
  19. #define PrintArray(a,n) for(int i=0;i<n;i++) cout << a[i] << " "; cout << endl;
  20. using namespace std;
  21.  
  22. int A[1000000];
  23.  
  24.  
  25. bool isExist(int arr[], int low, int high, int value) {
  26.     while(low <= high) {
  27.         int mid = (low + high) / 2;
  28.         if(arr[mid] == value) {
  29.             return true;
  30.         }
  31.         if(arr[mid] > value) {
  32.             high = mid - 1;
  33.         } else {
  34.             low = mid + 1;
  35.         }
  36.     }
  37.     return false;
  38. }
  39.  
  40.  
  41. void marge(int low, int mid, int high) {
  42.     int l[100000], r[100000], n1, n2;
  43.     n1 = mid - low + 1;
  44.     n2 = high - mid;
  45.  
  46.     for(int i = 0; i < n1; i++) {
  47.         l[i] = A[low + i];
  48.     }
  49.     for(int i = 0; i < n2; i++) {
  50.         r[i] = A[mid + i + 1];
  51.     }
  52.     l[n1] = r[n2] = 10000000;
  53.     int i = 0, j = 0;
  54.  
  55.     for(int k = low; k <= high; k++) {
  56.         if(l[i] <= r[j]) {
  57.             A[k] = l[i];
  58.             i++;
  59.         } else {
  60.             A[k] = r[j];
  61.             j++;
  62.         }
  63.     }
  64. }
  65.  
  66. void margeSort(int low, int high) {
  67.     int mid;
  68.     if(low < high) {
  69.         mid = (low + high) / 2;
  70.         margeSort(low, mid);
  71.         margeSort(mid + 1, high);
  72.         marge(low, mid, high);
  73.     }
  74. }
  75.  
  76. int main() {
  77. #ifdef Niloy
  78.     read("input.txt");
  79.     write("output.txt");
  80. #endif
  81.  
  82.     int n, q;
  83.     cin >> n >> q;
  84.    
  85.     InputArray(A, n);
  86.     margeSort(0, n - 1);
  87.  
  88.     for (int i = 0; i < q; i++) {
  89.         int l, r, x;
  90.         cin >> l >> r >> x;
  91.         bool ans = isExist(A, l - 1, r - 1, x);
  92.         if(ans) {
  93.             cout << "YES\n";
  94.         } else {
  95.             cout << "NO\n";
  96.         }
  97.     }
  98.     return 0;
  99. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement