Advertisement
Bekzhan

Untitled

Jun 19th, 2013
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.21 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdio>
  3. #include <vector>
  4. #include <iterator>
  5. #include <algorithm>
  6.  
  7. using namespace std;
  8.  
  9. #define all(x) (x).begin(), (x).end()
  10.  
  11. const int maxn = 100000;
  12.  
  13. vector <int> t[4 * maxn];
  14. int a[maxn], n, m, l, r, val;
  15.  
  16. void build(int v, int l, int r) {
  17.     if (l > r)
  18.         return;
  19.  
  20.     if (l == r) {
  21.         t[v].push_back(a[l]);
  22.         return;
  23.     }
  24.  
  25.     int m = (l + r) >> 1;
  26.  
  27.     build(v << 1, l, m);
  28.     build((v << 1) + 1, m + 1, r);
  29.  
  30.     merge(all(t[v << 1]), all(t[(v << 1) + 1]), back_inserter(t[v]));
  31. }
  32.  
  33. bool get_ans(int v, int l, int r, int q_l, int q_r, int val) {
  34.     if (l > r || l > q_r || r < q_l)
  35.         return false;
  36.  
  37.     if (l >= q_l && r <= q_r)
  38.         return binary_search(all(t[v]), val);
  39.  
  40.     int m = (l + r) >> 1;
  41.  
  42.     return (get_ans(v << 1, l, m, q_l, q_r, val) || get_ans((v << 1) + 1, m + 1, r, q_l, q_r, val));
  43. }
  44.  
  45. int main() {
  46.     #ifndef ONLINE_JUDGE
  47.         freopen("in", "r", stdin);
  48.     #endif
  49.  
  50.     scanf("%d", &n);
  51.  
  52.     for (int i = 0; i < n; i++)
  53.         scanf("%d", &a[i]);
  54.  
  55.     build(1, 0, n - 1);
  56.  
  57.     scanf("%d", &m);
  58.  
  59.     for (int i = 0; i < m; i++) {
  60.         scanf("%d%d%d", &l, &r, &val);
  61.  
  62.         l--, r--;
  63.  
  64.         if (get_ans(1, 0, n - 1, l, r, val))
  65.             putchar('1');
  66.         else
  67.             putchar('0');  
  68.     }
  69.  
  70.     return 0;
  71. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement