Advertisement
Galebickosikasa

Untitled

Oct 16th, 2019
134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.01 KB | None | 0 0
  1. #pragma GCC target("avx,avx2")
  2. #pragma GCC optimize("Ofast,no-stack-protector,unroll-loops,fast-math")
  3. #pragma GCC target("sse,sse2,sse3,ssse3,sse4.1,sse4.2,popcnt,tune=native")
  4. #pragma GCC optimize("03")
  5.  
  6. #include <iostream>
  7. #include <vector>
  8. #include <cmath>
  9. #include <numeric>
  10. #include <algorithm>
  11. #include <unordered_set>
  12. #include <unordered_map>
  13. #include <set>
  14. #include <map>
  15. #include <queue>
  16. #include <deque>
  17. #include <bitset>
  18. #include <stack>
  19. #include <random>
  20.  
  21. #define pb push_back
  22. #define ll long long
  23. #define ld long double
  24. #define all(a) a.begin(), a.end()
  25. #define sz(a) (int)a.size()
  26.  
  27. using namespace std;
  28.  
  29. //tg: @galebickosikasa
  30.  
  31. const int maxn = (int)3e5;
  32. const int inf = (int)2e9;
  33. const ld eps = 1e-9;
  34. mt19937 SuperRandom;
  35.  
  36. struct SparseTable{
  37. vector<vector<pair<int, int>>> st;
  38. vector<int> pow;
  39.  
  40. SparseTable(const vector<int>& v){
  41. int j = 1;
  42. while (1<<j < sz(v)) ++j;
  43. st = vector<vector<pair<int, int>>> (j, vector<pair<int, int>> (sz(v)));
  44. pow = vector<int> (sz(v) + 1);
  45. int tmp = 0;
  46. for (int i = 0; i < sz(v); ++i){
  47. st[0][i].first = st[0][i].second = v[i];
  48. if (1<<(tmp + 1) <= i) ++tmp;
  49. pow[i] = tmp;
  50. }
  51. pow[sz(v)] = j - 1;
  52. for (int k = 1; k < j; ++k){
  53. for (int i = 0; i < sz(v); ++i){
  54. st[k][i].first = max(st[k - 1][i].first, st[k - 1][i + (1<<(k - 1))].first);
  55. st[k][i].second = max(st[k - 1][i].second, st[k - 1][i + (1<<(k - 1))].second);
  56. }
  57. }
  58. }
  59.  
  60. pair<int, int> get(int l, int r) const {
  61. if (l > r) swap(l, r);
  62. int k = pow[r - l + 1];
  63. return {max(st[k][l].first, st[k][r - (1<<k) + 1].first), min(st[k][l].second, st[k][r - (1<<k) + 1].second)};
  64. }
  65.  
  66. };
  67.  
  68. int main(){
  69. ios_base::sync_with_stdio(false);
  70. cout.tie(nullptr);
  71. cin.tie(nullptr);
  72. int n;
  73. cin >> n;
  74. vector<int> goo(n);
  75. for (auto& x: goo) cin >> x;
  76.  
  77.  
  78.  
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement