Advertisement
LA77

Untitled

Feb 25th, 2025
148
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.90 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. /// INPUT / OUTPUT
  5. const string problem = "rmq";
  6. ifstream fin(problem + ".in");
  7. ofstream fout(problem + ".out");
  8.  
  9. const int NMAX = 1e5 + 5, LOG = 20;
  10. int N, Q;
  11. int arr[NMAX], rmq[LOG][NMAX];
  12.  
  13. inline void RMQ(int N)
  14. {
  15.     for(int j = 1; j <= N; ++ j)
  16.         rmq[0][j] = arr[j];
  17.  
  18.     for(int i = 1; (1 << i) <= N; ++ i)
  19.     {
  20.         for(int j = 1; j <= N; ++ j)
  21.         {
  22.             rmq[i][j] = min(rmq[i - 1][j], rmq[i - 1][j + (1 << (i - 1))]);
  23.         }
  24.     }
  25. }
  26.  
  27. int main()
  28. {
  29.     ios::sync_with_stdio(false);
  30.     fin.tie(NULL);
  31.     fout.tie(NULL);
  32.  
  33.     fin >> N >> Q;
  34.  
  35.     for(int i = 1; i <= N; ++ i)
  36.         fin >> arr[i];
  37.  
  38.     RMQ(N);
  39.  
  40.     while(Q--)
  41.     {
  42.         int a, b;
  43.         fin >> a >> b;
  44.         int k = log2(b - a + 1);
  45.         fout << min(rmq[k][a], rmq[k][b - (1 << k) + 1]) << '\n';
  46.     }
  47.  
  48.     return 0;
  49. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement