Advertisement
aayyk

Untitled

Oct 30th, 2019
224
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.38 KB | None | 0 0
  1. #include <iostream>
  2. #include <iomanip>
  3. #include <cstdlib>
  4. #include <algorithm>
  5. #include <vector>
  6. #include <queue>
  7. #include <stack>
  8. #include <climits>
  9. #include <string>
  10. #include <set>
  11. #include <cmath>
  12. #include <map>
  13. #include <unordered_map>
  14. #include <numeric>
  15. #include <random>
  16. #include <memory>
  17. #include <chrono>
  18. #include <iterator>
  19. #include <functional>
  20. #include <unordered_set>
  21. #include <cassert>
  22. #ifdef LOCAL
  23. #include "debug.h"
  24. #else
  25. #define debug(x...)
  26. #endif
  27. //#pragma GCC optimize("Ofast")
  28. //#define int ll
  29.  
  30.  
  31.  
  32. using namespace std;
  33. typedef long long ll;
  34. typedef long double ld;
  35. typedef pair <int, int> pii;
  36. #define mp make_pair
  37. #define pb push_back
  38. #define sz(x) int((x).size())
  39.  
  40. #ifndef LOCAL
  41. mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
  42. #else
  43. mt19937 rng(228);
  44. #endif
  45.  
  46. const int N = 1e6 + 7;
  47. const int inf = INT_MAX / 2;
  48. const ll INF = LLONG_MAX / 3;
  49. const int MOD = 1e9 + 7;
  50. const ld eps = 1e-6;
  51. const string cars[] = {"🚗", "🚕", "🚙"};
  52.  
  53. struct sparse {
  54.     private: vector < vector < pii > > a;
  55.     private: int log;
  56.  
  57.     public: sparse(vector < int > v) {
  58.         log = ceil(log2(sz(v)));
  59.  
  60.         a = vector < vector < pii > > (sz(v), vector < pii > (log + 1));
  61.  
  62.         for (int i = 0; i < sz(v); i++) {
  63.             a[i][0] = { v[i], i };
  64.         }
  65.  
  66.  
  67.         for (int j = 1; j <= log; j++) {
  68.             for (int i = sz(v) - 1; i >= 0; i--) {
  69.                 if (i + (1 << (j - 1)) < sz(a)) {
  70.                     a[i][j] = max(a[i + (1 << (j - 1))][j - 1], a[i][j - 1]);
  71.                 }
  72.             }
  73.         }
  74.     }
  75.     public: sparse() {}
  76.  
  77.     public: pii query(int l, int r) {
  78.         int j = log2(r - l + 1);
  79.         //debug(j, a[l][j], a[r - (1 << j) + 1][j]);
  80.  
  81.         return max(a[l][j], a[r - (1 << j) + 1][j]);
  82.     }
  83. };
  84.  
  85. signed main() {
  86. #ifdef LOCAL
  87.     freopen("input.txt", "r", stdin);
  88.     freopen("output.txt", "w", stdout);
  89. #endif
  90.     cout << fixed << setprecision(9);
  91.     ios::sync_with_stdio(false);
  92.     cin.tie();
  93.     cout.tie();
  94.  
  95.     int n;
  96.     cin >> n;
  97.  
  98.     vector < int > a(n);
  99.  
  100.     for (int& x : a) {
  101.         cin >> x;
  102.     }
  103.  
  104.     sparse table(a);
  105.  
  106.     int q;
  107.     cin >> q;
  108.  
  109.     while (q--) {
  110.         int l, r;
  111.         cin >> l >> r;
  112.  
  113.         auto x = table.query(l - 1, r - 1);
  114.         cout << x.first << " " << x.second + 1 << "\n";
  115.     }
  116.  
  117.     return 0;
  118. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement