제출 #775513

#제출 시각아이디문제언어결과실행 시간메모리
775513OrazBGap (APIO16_gap)C++17
0 / 100
19 ms1104 KiB
#include <bits/stdc++.h> #include "gap.h" #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> #include <functional> using namespace __gnu_pbds; using namespace std; typedef tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> ordered_set; //Dijkstra->set //set.find_by_order(x) x-position value //set.order_of_key(x) number of strictly less elements don't need *set.?? #define N 100005 #define wr cout << "Continue debugging\n"; #define all(x) (x).begin(), (x).end() #define ll long long int #define pii pair <int, int> #define pb push_back #define ff first #define ss second const ll inf = 1e18; ll a[N]; ll findGap(int t, int n) { // if (t == 1){ // int l = 1, r = n; // ll mn = 0, mx = 1e18, ans = 0; // while(l <= r){ // ll s = mn, t = mx; // MinMax(s, t, &mn, &mx); // a[l] = mn; // a[r] = mx; // if (l > 1) ans = max(ans, a[l]-a[l-1]); // if (r < n) ans = max(ans, a[r+1]-a[r]); // l++; // r--; // mn++; // mx--; // } // if (n == 2) return a[2]-a[1]; // return ans; // } // ll mn, mx; // MinMax(0, 1e18, &mn, &mx); ll l = 0, r = 1e18, ans = 0; while (l < r){ ll md = (l+r)/2; ll mn, mx, mn1, mx1, x = -inf, y = -inf; MinMax(l, md, &mn, &mx); mn1 = mn; mx1 = mx; if (mn1 != -1) x = mx1-mn1+1; MinMax(md+1, r, &mn, &mx); if (mn != -1) y = mx-mn+1; if (mx1 != -1 and mn != -1) ans = max(ans, mn-mx1); if (x > y) r = md; else l = md + 1; } return ans; } // int main () // { // ios::sync_with_stdio(false); // cin.tie(0); // cin >> t; // while (t--){ // } // }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...