FEgor04

я пидорас

Sep 21st, 2019
244
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.38 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. // #define DEBUG
  3. using namespace std;
  4.  
  5. typedef long long ll;
  6. typedef long double ld;
  7. typedef vector<ll> vll;
  8. typedef vector<int> vi;
  9. typedef pair<ll, ll> pll;
  10. typedef pair<int, int> pii;
  11.  
  12. #define FF first
  13. #define SS second
  14. #define MP make_pair
  15. #define watch(x) cout << #x << " is " << x << endl
  16.  
  17. vector<pll> t;
  18. vll a;
  19.  
  20. ll INF = ll(1e9);
  21.  
  22. void build(ll v, ll l, ll r) {
  23.     // watch(v);
  24.     // watch(l);
  25.     // watch(r);
  26.     if(r - l == 1) {
  27.         // t[v].FF = a[l];
  28.         // t[v].SS = l;
  29.         t[v] = MP(a[l], l);
  30.         return;
  31.     }
  32.     ll mid = l + (r - l) / 2;
  33.     build(2 * v, l, mid);
  34.     build(2 * v + 1, mid, r);
  35.     t[v] = min(t[2 * v], t[2 * v + 1]);
  36.     return;
  37. }
  38.  
  39. pll get(ll v, ll l, ll r, ll ql, ll qr) {
  40.     if(ql <= l && r <= qr) {
  41.         return t[v];
  42.     }
  43.     if(r <= ql || qr <= l) {
  44.         return MP(INF, INF);
  45.     }
  46.     ll mid = l + (r - l) / 2;
  47.     pll ansl = get(2 * v, l, mid, ql, qr);
  48.     pll ansr = get(2 * v + 1, mid, r, ql, qr);
  49.     return min(ansl, ansr);
  50. }
  51.  
  52. int main() {
  53.     ios_base::sync_with_stdio(0);
  54.     cin.tie(NULL);
  55.     #ifdef DEBUG
  56.     #else
  57.         freopen("rmq.in", "r", stdin);
  58.         freopen("rmq.out", "w", stdout);
  59.     #endif
  60.     ll n, m;
  61.     cin >> n >> m;
  62.     a.resize(n + 1);
  63.     t.resize(4 * n);
  64.     for(ll i = 1; i <= n; i++) {
  65.         cin >> a[i];
  66.     }
  67.     build(1, 1, n + 1);
  68.     ll l, r;
  69.     for(ll i = 0; i < m; i++) {
  70.         cin >> l >> r;
  71.         cout << get(1, 1, n + 1, l, r + 1).SS << "\n";
  72.     }
  73.     return 0;
  74. }
Advertisement
Add Comment
Please, Sign In to add comment