Omeganott

Untitled

Aug 16th, 2025
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 13.37 KB | None | 0 0
  1. /*
  2. #############################################################################################%####################################%###############
  3. #--%###*-=+-####--+::::=##%-:*#=:%#*-*#%-::+########%=::+##:=%#*-=#=-##:::::+%-:###-=####-:::=%##-::::*##=:=#####-::*%::::::+#-+###-::*##%--#%%--#
  4. #::%###*:-*:-##=:#=..::-###=.*#-.*#=:**:.:..:#####*#:.:::##.-##+.+#=:##...::+%:.=#%:-####:.::.:%#..:::*#%::.####-.::-%:....:+*:=#*..:.:=##:.=##:-#
  5. #::####*:-%::%#-:%=.#######*.+#:.:%:.%-:*##+:+#####-:#%##*#.-##+:=#=:*#.:%###%::.*%:-###%::##=:*#.-#####+:#.+##::####*##-:%##*.=#-:##%-:#%::.##::#
  6. #::####*:-#+:*#:=#=.::-*####:=*.=:#:-#::%##*.=#####::######.::::.=#=:##..:--#%::--#:-####:.##::##.::-=##-:#:=#+:=#######-:%##*.=%:-###+.=%::-:#::#
  7. #::####+:-#*:+*.*#=:::-#####:-=:+.*.+%::##%*.=*--=#::#####*..::..=#=:*#..::-#%:.+.+:-####:..:.+##:::-=##:=#-:*+:=#######::###*.=#:-###+:-#::*.*.-#
  8. #::%###+:-##:-::%#=:########:::-#:-:%#::*##*.+#--=#::*###*#:-##+:=#=:*#::%###%::%=.:-####:.#::*##:-####*.....#*:-#######-:###*:=%-:###=:+%::#-.::%
  9. #::*****:-##-..+##=.+***####=..##..:##*::%+.:####*#+::#*:##.-##*:=#=:##.:*#**%::#*:.-###%:.##:-##.:***#::###.-%-:-#+-%##-:###*:=#+..#+.-%#::#%:.:#
  10. #:..::+*:=##%::*##=:...:%##%#::##=:-###*:..:#########:::-#*:-##*:+%=:##:..::=%::##+:-###%-:#%=:=%:....+:-###--*#=:.:=###-:###*:+*#*.::-###:-##+:-#
  11. ################################################################################################################################################%#
  12. ####################################################%#################################################################%#########%#################
  13. %#%#%@%@@%%%%%*%@%#%%%%@@%@@@@@@#%%#***+++@@@@@@@@@@*@@%@@@@@@%#--@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%:*@@@@@@@%@@@@@@@@
  14. ##%%%@#@@@%%%%###@%%#%@@@@%#@@@@+%%++*%=##%@@@@@@@@@@-#@@@%@@@%#=:@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%:*@@@@@@%%=@@@@@@@
  15. -#@@@@%%%%#%%%@%#####%##%#%*##+*+#@#*%%%+%%###@@@@@@@@+.-%@@@@%#-=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%:+@@@@@@=:@@@@@@@@
  16. --#@@#*%@@@@@@%%@%%#%%%***%@%##*++#+%%%%*=**#%@@@@@@@@@%+:.:-=*#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+:@@@@-.:@@@@@@@@@
  17. :-:*%@@%%%@@%@%%%@#%*%*#%###%%%##*%#**=*+=-+=#=**@@%%*++#@@*=::.:.:::.:-#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@%%=-::-%@@@%@@@@@@
  18. +--:*@@@@@@@@@@@@@@@@@%#%#%#%%%%%%#**+++=+**%#=-%%#*+++=%@**%@@@%%+-....::=@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+:::::.-#@@@@@@@@@@@@@
  19. %+:::+@@@@@@@@@@@@@@@%@%#*#%@%*+*%@%@#*+*%%#%%@%%#++*+=#@%*@%@#-=#++*%%-...:#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@+:::::*%#-@@@@@@@@@@@@@@
  20. #%##%%%@@@@@@@@@@@@@@@%@@@@@@%#%%@@%%@#+%%@*+##%%%#*@+*@%@@@@%#::=+++++*%:.::#@@@@@@@@@@@@%=#@@@@@@@@@@@@@@+@#@@@@@@@@@@%+::.+@*#%-:@@@@%@@@@@@@@@
  21. %%%###%%%%###%%%@@@@@@@@%%@%%%#@%%@@@@%%@#%%=*#=++*%%%*@+#@%%@#-::%*%#*=+%=:..%@@@@@@@@@@@%==-=#@%@@@@@@%===*@@@@@@@@@%@#::-%#*+%%:+@@@@@@@@@@@@@@
  22. %#%%##%#%@%#%%%%#%@@@@@%%%@@%%%%@%@%@@@@%@%#*=*=*##*#%%+*@@#*#%#::-#===:-+@:.:*@@@@@@@@@@@%+---==*@@%@@*==--=@@@@@@@@@@%*::%+-:*@+:%@@@@@@@@@@@@@@
  23. %%#%%%###%%%#%###%@#=+=%@@%%@@%@%%@@@@%%%%@@@%@@%#+%###*%%@%@#%#+:.=@#%#**@::.*@@@@@@@@@@@%#=-=-===*@%*-=====#@@@@@@@@@#=:*###%@#:-@@@@@@@@@@@@@@@
  24. %#@#%%%%%%%%%##%#%#@*+++%%@@@@@@#*@@@@@%@@@@@#%@@@**@%*%%@@@@#%@#+:::%*+++@=:.#@@@@@@@@@@@@#*==---=-*#*-==-=-=@@@@@@@@%#::@+*%%-.-@%@@@@@@@@@@@@@@
  25. %##%%%%%%#%%#%%#%#%#@*+++@@%@@@@@@@@@@@@@@@@@@@@%%#%@%@%@@@%*#%#@%*:::=@+*@+::@@@@@@@@@@@%%@%#+==-===@*===-=*@@@%@@@@@#*:+%#+:.:#@%@@@@@@@@@@@@@@@
  26. %##%%%%%###%#%%#%#%#%%*+*+%@@@@@@@@@@@@@@@@@@@@@@@%#@@@@@@@%@%%%#%@%+:.:-#@*::@@@@@@@%%%%%%%%@%#*=--=@*--=##*#@@@@@@@##=:*:-=#%#@@@@@@@@@@@@@@@@@@
  27. ##%%#%%%%@%%@%%@%%@@%%@*+*=%@@@@@@%@@@@@@@@@@@@@@@%@@@@@@@@@%@###@%%@%*::-@#=.%@@@@%%##%%%###%%%@%*+=@==#*+*%*++#@@@%#+.=@@*##+++%%@@@@%%%%%%%%%%%
  28. #%#%%%@#%%%%#%%@###%#%%%++*+#@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@%%%%@**@@@%*%%#:+@@%%#%#*++##%#+++++*%%%*++++++*@%@@@##=.-%@%%#%++++@@@@%%%%%%%%%%%%
  29. %@%#%#@%%@%%%%%%%%%%#%%@%%%#=*@@@@@@@@@@@@@@@%@@@@%@@@@@@@@@@@%#%%%#@@@%@%@@##:-%%#*+*#%%%*+++++++++++*++++++++%%##=:.*@@@#%%#++++@@@%%%######%%%%
  30. #%%%%@%%%%#%%%@@@@@%%%%%%%%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#%@@%@@%#%%#%%*%@##*-:=+*%%%#*++++++++++++*+++++++++#+:+#@@@@@@@@%*+++@@@%%%##########
  31. %%%%@@@@%%%%%#%#%##%%%%%%#%%%#+==***%@@@@@@@@@@@@@@@@@@@@@@@@@@@@***##*#%%%%%%@%%%#*#@%*+++++++++++++++%++++++++=#*++%@@%@@@@%*+++@@%%%%##########
  32. @@@%%%#%%###%%%%%#######%%%%%##+==#=====*+#%@@@@@@@@@@@@@@%@@@@+*#*+=#%@%#%%%%%%#%%%%%*+++++++**+++++++**+++**++++@+++%%@@@@@@#+=%%%%%%%##########
  33. ####%%%%%#%%%%%#%@%#####%%%%%%%*=+=#=====#+==*@@@@@@@@@@@**@@@###%@%%@@#%%%%%%%%##%%@*++++++*%++++++++++*++++###*+#*++*@@@@@%%%*@%%%%%%###########
  34. %##%%%%%%##%%%%##%%######%%#%%%#++=+%=====#===+%@@%%@@@@@%#@@@%%%%%@@%#%%%%%%%%%%%%%%++=++#%#*++++++++++*+++++#==##++++@%@@%%%%####%%##%%######*##
  35. %####%@%#%#%%%%###@%####%###%%%%#====*=====#==++#@@@@@@@@@@@@@@#%%%@%#%%%%%%%%%####%%#%%*===*#++++++++++*+++++#===+%+++%%%%%%%%%%#####%%%%%%%%%%%%
  36. %####%#%#%#%%%%###%@######%%%%%%%+===#+====+%+=+*%@@@@@@@@%%#*%%@@@%%%%#%#%%%%%#++*#%=---==-=+%*++++++++++++++#=====%++*%%%%%%%%%#%###%%%%%%%%%%%@
  37. %######%%%%%%%#%##%%%%%####%%%%%%#++==#======#=++*%@@@@@@@@@@%%@@@%%##%#%%%%##*++++#*-===---=-==##++++++++++**==-===%++#%%%%%%%%%%%%%#%%%%%%%@@@@@
  38. %####%%#%%%%###%%%#%%%#%###%@%%%%%++=++#=====**=+++%@@@@@@@@@@@@@##%#%%%%%%#%*+++++%+==-===--===-=*%*+++++#*==-=--==%++#%%%%%%%%%%%%%%%#*%@@@@@@@@
  39. %#######%@%%@@@%%#%%%%#%%#%%%%%%%##+*==**==+==*==+*+@@@@@@@@@@@@%%%%#%%%%%%#+++++++%+=========--====+%%**-=--====-==%++#@@%@%%%%#*%%%%%#%**+*@%@@%
  40. %%#%%#%%#%@#****#%@@@@@%%@@@@@@@@@@@@@@@@%%#***+*++++%@@@@@@@@@%%%%%%%#%%%%*+++++++%+===-==========--====---=====-=+%++#@@@%%+++###%#%-=+#=-#%@@@#
  41. %%##%%%#%##@##*******##%%%%%%#####**#**#*****##%@@%%%#@@@@@@@@%%%%%%%%%#%#*++++++++##=-====---=---==--==--=======-=*#++@@%#=*+++--:-=-+-==#*=++*=-
  42. #%##%%%####%@%#%%%%%%%%%%%#***********************#%@@@@@@@@@@%%%%%%##%##*++++++++++%=---=--===--===========-==-==-%#+*@#**%#%%%@#*%%%%%#%@@%-*==*
  43. %@#********##%%%%%%%%%%%##****************************%@@@@@@%#%%%%%#%%%*+++++++++++*%*-=-=-=-+%=-===========-*#==-%*=%+==%%%%%@@@##@%%@@@@@%@%%%%
  44. %%%%%%%%%%%%%%%%%%%%%%%#********************************#%@@@%##%#%%#%%*+++++++++++*++#%==--=%*%============--%%=-*#+%%%%%%%@@@@%@%@@@@@@@@@%@@@%@
  45. %%%%%%%%%%%%%%%%%%%%%%%#*******************************##%%%%#%%%%%%%%*++++++++=+#@#+++%%=-+#+*%====-=----===-##*#++++%%%%%@%%%@@@@@@@@@@@@@@@@@@@
  46. %%%%%%%%%%%#@%%%%%%%%%%###****************************#%%%#%#%%%%%%%%#++++++++#@%###++**###++++##-====--=====#**%*++++*@@@%##%@@@@@@@@@@@@@@@@@@@@
  47. %%%%@%*++++++%%%%%%%%%%%%%####*************####%%#%#**#%###%%%#%%%%%#+++*#%@%#*+++#%+%++++++++++#%==-===--=+%+++++++#==#%%%%@@@@@@@@@@@@@@@@@@@@@@
  48. %%@#+=+++++++*%@@@%%*+++*@%%%%%%%%%##%%%@@%%%#++==**+%#########%%@%%%#%%%%#%*+++++***=+++++++++++*%#===-==@*++++++++*%++%%@@@@@@@@@@@@@@@@@@@@@@@@
  49. @#+=+++++++++++++++=++++++%%%%%%%%%%%%%%###%#%*====##%##########%%%%%#%###%#+++=*++++++++++++++++++#@*-+%*+=+++++++++@++#@@@@@@@@@@@@@@@@@@@@@@@@@
  50. #+++++++++++++++++++++++++%%%%%@@@%##%%@#%%%%##+=*%##########%#@%%%%%%%%%%%++++#++++++++++++++++++++++#++++++++++++++*#++@@@@@@@@@@@@@@@@@@@@@@@@@
  51. #+++++*++++%++++++++++++++#@%@%%%#%##%%%%%%#%#%#%##############@%%%%%%%%%#++++*=++=+++++++++++++++++++*+++++++++++++++%++%@@@@@@@@@@@@@@@%%@%@@@@@
  52. ##%%%#++++#=++++++#+++++++*%#%%@%#######%#%%#%%%###%##########%#%%%%%@%#%*+++**=+++++++++++++++++++=++#+++++++++++++++%++#@%@@@@@@@@@@@@@@@@@%@%%#
  53. %%%%%++++%+++++++*@%#+=+++*%%%#%@#%%###%%@%#%%##############%%%%%%#%@%#%*++++*++++++++++++++++++++++++#+++++++++++++++#*+#@@@@@@@@@@%%#########%%%
  54. %%%@%*++*++++++++#@%@%####@%%%#%%@#%####%#%%%#%##############%%%%%%%@%%%++++*+++++++++++++++++++++++++#++++++++=++++++#%%@###*###%%%%%@@@@@@@@@@@@
  55. %%%@##++*+++++++*%@%%@@%%%@%%##%%%%##%%%#%%%%################%%#%%#@%%%#+++++=++++++++++++++++++++++++#+++++++*+++++++#%%%@%%%%#%%@%#%@@@@@@@@@@@@
  56. %%%@%##+*++++++#%@%%##@%%%%##%%%#%@%#%#%#%%#################%@%%#+=*##%%*++++++++++++++=+++++++++++=+=#+++++++*+++++++#@%%%%##%@@@@@@@@@@@@@@@@@@@
  57. %%%%@%##**++##%%%##%##%@%%#%#%%##%#@%#%%%#############%######+--====%%#%#+++++++++++++*+++++++++++++++#++++++**+++++++##***#%#%@@@@@@@@@@@@@@@@@@@
  58. %%%%%@%#%##%##%%##%#%%%%%#%%#%%%%%##@%#@%########%###%@#####==-======@%%#+++++++++++++#=++++++++++++#=*%+++++#++++++++%#*#%@@@%@@@@@%@@%%@@%%@@@@@
  59. %%%%%%@%#%%%%@%##%%#%%%%%@%##%%%%%%%%%%%###########@%#%####=--=-=-=*%#@#%*++++++++++++@*++++++++++*+==-=##+++@*+++++++%%@%%@@@@@@@%%@%%%%%%@@@@@@@
  60. %%%%%%%@%#%@%#%%%#%%##%%##@%#%%%%%#%#%%#%###%###%@###%%###=======+@*+=#@%%+++++++++++%*%+++++++=*#-=--====@+*+%+++++++%@@@@%%%%%%%%%%@@%@@@@@@@@@@
  61. %%%%@%%#%%%%@%%%%%%%######%%%##%%#%%#@%######@@######%%%#=-=--=%%#+-===*@%#++++++++%+==#*++++=*%=-======-====-+%*+++++@%%%@@@%%%%%@%%@@@@@@@@@@@@@
  62. @@#####%###%#%#%%%%%####%##%@%#%%%@%#%%%%%%##########%%*=-==#@#%==-=-==-+%@+++++##===-==@+++#*==-=======-==--===%#+++##@@@@%%%%%%%%%@@@@@@@@@@@@@@
  63. %###%%%%##%%%#@%%%%%%%%##%#%%@%@%#%##%###############%#%%##%#*---=-==--===*%###==-====-=+%%=----=-=====--===-==-=%%++@=%@%%%%%%%%%@@@@@%@@@@@@@@@@
  64. %%%############@#%#%%%%#%#%#%@%#%###########################==-======--======-===--===--===--==========-----======#%%-=+%%%@@%%%@@@@@@@@@@@@@@@@@@
  65. %%%%%#########%#%#%%%%%%%#@@###############################*=====-------=--==--==---==-=====-============-=-=======---==%@@%%%%%%@@@@@@@@@@@@@@@@@
  66. %%%%%##########%#@#%%#%%@%##%##########################%###==-=====------======-=-=----=-#=====-===-=--=====--=--======-@@@@@@@@@@@@@@@@@@@@@@@@@@
  67. %%%%%#########%%##%%%#%%##################################*========------=======+===---=#%==---=-==@==-===-*==-=-======-%@@@@@@@@@@@@@@@@@@@@@@@@@
  68. #%%%%#########%##%%%#@################################%###=-==========---=-====*%===-==*%%==-==-==@#%-=--==%+-===-====--#@@@@@@@@@@@@@@@@@@@@@@@@@
  69. #%%%%%%########%#%#@%################%##################%*=====-===-===--=-==-#%%--=-=*##%+-=====@*#%@---==%%-==--=====-*@@@@@@@@@@@@@@@@@@@@@@@@@
  70. #%%%%%%%########%#@###################################%##=-======-%====--=-==%#%+=-=-@#*%%*-=--+%*++##%*-==%%%---=----=-*@@@@@@@@@@@@@@@@@@@@@@@@@
  71. #%%%%%%%########%###############%@%%##%#################*-========@%+==-==-*@+%@=-=%%*++%%#==*%#++=++%%%%*@#%%#--======-*@@@@@@@@@@@@@@@@@@@@@@@@@
  72. #%%%%%%%######%%%############%@%#%#@####################=-=======+##@*-==@@**=%%###*+=++##%%%#*+++++++*#%%*+###@+=====-=%@@@@@@@@@@@@@@@@@@@@@@@@@
  73. */
  74.  
  75. #include <bits/stdc++.h>
  76.  
  77. using namespace std;
  78.  
  79. using ll = long long;
  80. const ll MOD = 1E9 + 7;
  81. const int INF = 1E9; const ll INFLL = 1E18;
  82.  
  83. struct Seg {
  84.     int n;
  85.     vector<int> seg;
  86.     vector<int> lazy;
  87.     Seg() {}
  88.     Seg(int n) {
  89.         this->n = n;
  90.         seg.resize(4 * n, INF);
  91.         lazy.resize(4 * n);
  92.     }
  93.     void prop(int p) {
  94.         if(lazy[p]) {
  95.             seg[p * 2] += lazy[p];
  96.             lazy[p * 2] += lazy[p];
  97.             seg[p * 2 + 1] += lazy[p];
  98.             lazy[p * 2 + 1] += lazy[p];
  99.             lazy[p] = 0;
  100.         }
  101.     }
  102.     void update(int p, int l, int r, int i, int j, int x) {
  103.         if(l == i && r == j) {
  104.             seg[p] += x;
  105.             lazy[p] += x;
  106.             return;
  107.         }
  108.         prop(p);
  109.         int mid = l + (r - l) / 2;
  110.         if(i <= mid) {
  111.             update(p * 2, l, mid, i, min(j, mid), x);
  112.         }
  113.         if(j > mid) {
  114.             update(p * 2 + 1, mid + 1, r, max(i, mid + 1), j, x);
  115.         }
  116.         seg[p] = min(seg[p * 2], seg[p * 2 + 1]);
  117.     }
  118.     void update2(int p, int l, int r, int i, int x) {
  119.         if(l == r) {
  120.             seg[p] = x;
  121.             return;
  122.         }
  123.         prop(p);
  124.         int mid = l + (r - l) / 2;
  125.         if(i <= mid) {
  126.             update2(p * 2, l, mid, i, x);
  127.         } else {
  128.             update2(p * 2 + 1, mid + 1, r, i, x);
  129.         }
  130.         seg[p] = min(seg[p * 2], seg[p * 2 + 1]);
  131.     }
  132.     int query(int p, int l, int r, int i, int j) {
  133.         if(l == i && r == j) {
  134.             return seg[p];
  135.         }
  136.         prop(p);
  137.         int mid = l + (r - l) / 2;
  138.         int wochien = INF;
  139.         if(i <= mid) {
  140.             wochien = query(p * 2, l, mid, i, min(j, mid));
  141.         }
  142.         if(j > mid) {
  143.             wochien = min(wochien, query(p * 2 + 1, mid + 1, r, max(i, mid + 1), j));
  144.         }
  145.         return wochien;
  146.     }
  147. };
  148.  
  149. int n; int q;
  150.  
  151. int main() {
  152.     ios_base::sync_with_stdio(false);
  153.     cin.tie(0);
  154.     cin >> n >> q;
  155.     vector<int> a(n);
  156.     for(int i = 0; i < n; i++) {
  157.         cin >> a[i];
  158.     }
  159.     vector<int> wochien(q);
  160.     vector<vector<array<int, 2>>> right(n);
  161.     for(int i = 0; i < q; i++) {
  162.         int l; int r;
  163.         cin >> l >> r;
  164.         l--; r--;
  165.         right[l].push_back({r, i});
  166.     }
  167.     stack<int> stk;
  168.     Seg seg(n);
  169.     map<int, int> mp;
  170.     int nearestDuplicate = n;
  171.     for(int i = n - 1; i >= 0; i--) {
  172.         while(stk.size() && a[i] > a[stk.top()]) {
  173.             int cur = stk.top(); stk.pop();
  174.             int r = (stk.size() ? stk.top() - 1 : n - 1);
  175.             seg.update(1, 0, n - 1, cur, r, a[i] - a[cur]);
  176.         }
  177.         nearestDuplicate = min(nearestDuplicate, (mp.count(a[i]) ? mp[a[i]] : n));
  178.         mp[a[i]] = i;
  179.         if(i + 1 < n) {
  180.             seg.update(1, 0, n - 1, i + 1, n - 1, -1);
  181.         }
  182.         seg.update2(1, 0, n - 1, i, a[i] - 1);
  183.         stk.push(i);
  184.         for(array<int, 2> j : right[i]) {
  185.             wochien[j[1]] = seg.query(1, 0, n - 1, i, min(nearestDuplicate - 1, j[0]));
  186.         }
  187.     }
  188.     for(int i : wochien) {
  189.         cout << i << "\n";
  190.     }
  191. }
Advertisement
Add Comment
Please, Sign In to add comment