Omeganott

Untitled

Aug 16th, 2025
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 14.61 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<ll> seg;
  86.     vector<multiset<ll>> leaf;
  87.     Seg() {}
  88.     Seg(int n) {
  89.         seg.resize(4 * n, INFLL);
  90.         leaf.resize(4 * n);
  91.     }
  92.     void add(int p, int l, int r, int i, ll x) {
  93.         if(l == r) {
  94.             leaf[p].insert(x);
  95.             seg[p] = *leaf[p].begin();
  96.             return;
  97.         }
  98.         int mid = l + (r - l) / 2;
  99.         if(i <= mid) {
  100.             add(p * 2, l, mid, i, x);
  101.         } else {
  102.             add(p * 2 + 1, mid + 1, r, i, x);
  103.         }
  104.         seg[p] = min(seg[p * 2], seg[p * 2 + 1]);
  105.     }
  106.     void remove(int p, int l, int r, int i, ll x) {
  107.         if(l == r) {
  108.             leaf[p].erase(leaf[p].find(x));
  109.             seg[p] = (leaf[p].size() ? *leaf[p].begin() : INFLL);
  110.             return;
  111.         }
  112.         int mid = l + (r - l) / 2;
  113.         if(i <= mid) {
  114.             remove(p * 2, l, mid, i, x);
  115.         } else {
  116.             remove(p * 2 + 1, mid + 1, r, i, x);
  117.         }
  118.         seg[p] = min(seg[p * 2], seg[p * 2 + 1]);
  119.     }
  120.     ll query(int p, int l, int r, int i, int j) {
  121.         if(l == i && r == j) {
  122.             return seg[p];
  123.         }
  124.         int mid = l + (r - l) / 2;
  125.         ll wochien = INFLL;
  126.         if(i <= mid) {
  127.             wochien = query(p * 2, l, mid, i, min(j, mid));
  128.         }
  129.         if(j > mid) {
  130.             wochien = min(wochien, query(p * 2 + 1, mid + 1, r, max(i, mid + 1), j));
  131.         }
  132.         return wochien;
  133.     }
  134. };
  135.  
  136. vector<ll> dijkstra(int source, vector<vector<array<int, 2>>>& adj) {
  137.     vector<ll> wochien(adj.size(), INFLL);
  138.     wochien[source] = 0;
  139.     priority_queue<array<ll, 2>, vector<array<ll, 2>>, greater<array<ll, 2>>> pq;
  140.     pq.push({0, source});
  141.     vector<bool> seen(adj.size());
  142.     while(pq.size()) {
  143.         array<ll, 2> x = pq.top(); pq.pop();
  144.         /* if(seen[x[1]]) {
  145.             continue;
  146.         } */
  147.         // seen[x[1]] = true;
  148.         for(array<int, 2> i : adj[x[1]]) {
  149.             if(!seen[i[0]] && wochien[x[1]] + i[1] < wochien[i[0]]) {
  150.                 wochien[i[0]] = wochien[x[1]] + i[1];
  151.                 pq.push({wochien[i[0]], i[0]});
  152.             }
  153.         }
  154.     }
  155.     return wochien;
  156. }
  157.  
  158. vector<int> cc;
  159.  
  160. int get(int x) {
  161.     return lower_bound(cc.begin(), cc.end(), x) - cc.begin();
  162. }
  163.  
  164. int n; int m;
  165.  
  166. int main() {
  167.     ios_base::sync_with_stdio(false);
  168.     cin.tie(0);
  169.     cin >> n >> m;
  170.     vector<array<int, 2>> barns(2 * n);
  171.     for(int i = 0; i < 2 * n; i++) {
  172.         cin >> barns[i][0] >> barns[i][1];
  173.     }
  174.     map<int, vector<array<int, 2>>> mpX;
  175.     for(int i = 0; i < 2 * n; i++) {
  176.         cc.push_back(barns[i][1]);
  177.         mpX[barns[i][0]].push_back({barns[i][1], i});
  178.     }
  179.     sort(cc.begin(), cc.end());
  180.     vector<vector<array<int, 2>>> adj(2 * n);
  181.     for(int i = 0; i < m; i++) {
  182.         int u; int v; int e;
  183.         cin >> u >> v >> e;
  184.         u--; v--;
  185.         adj[u].push_back({v, e});
  186.         adj[v].push_back({u, e});
  187.     }
  188.     vector<ll> dist = dijkstra(0, adj);
  189.     vector<ll> dist2 = dijkstra(2 * n - 1, adj);
  190.     Seg seg1(2 * n);
  191.     Seg seg2(2 * n);
  192.     Seg seg3(2 * n);
  193.     Seg seg4(2 * n);
  194.     for(int i = n; i < 2 * n; i++) {
  195.         int y = get(barns[i][1]);
  196.         seg1.add(1, 0, 2 * n - 1, y, dist2[i] + barns[i][0] + barns[i][1]);
  197.         seg4.add(1, 0, 2 * n - 1, y, dist2[i] + barns[i][0] - barns[i][1]);
  198.     }
  199.     ll wochien = INFLL;
  200.     for(pair<int, vector<array<int, 2>>> i : mpX) {
  201.         for(array<int, 2> j : i.second) {
  202.             int y = get(j[0]);
  203.             if(j[1] >= n) {
  204.                 seg1.remove(1, 0, 2 * n - 1, y, dist2[j[1]] + i.first + j[0]);
  205.                 seg4.remove(1, 0, 2 * n - 1, y, dist2[j[1]] + i.first - j[0]);
  206.                 seg2.add(1, 0, 2 * n - 1, y, dist2[j[1]] - i.first + j[0]);
  207.                 seg3.add(1, 0, 2 * n - 1, y, dist2[j[1]] - i.first - j[0]);
  208.             } else {
  209.                 wochien = min(wochien, dist[j[1]] + min({seg1.query(1, 0, 2 * n - 1, y, 2 * n - 1) - i.first - j[0], seg2.query(1, 0, 2 * n - 1, y, 2 * n - 1) + i.first - j[0], seg3.query(1, 0, 2 * n - 1, 0, y) + i.first + j[0], seg4.query(1, 0, 2 * n - 1, 0, y) - i.first + j[0]}));
  210.             }
  211.         }
  212.     }
  213.     cout << wochien << "\n";
  214. }
Advertisement
Add Comment
Please, Sign In to add comment