# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
563743 | khangal | Gap (APIO16_gap) | C++14 | 0 ms | 0 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "gap.h"
#include<bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
using namespace std;
typedef long long ll;
typedef double db;
typedef vector<long long> vl;
typedef pair<long long, long long > pl;
#define po pop_back
#define pb push_back
#define mk make_pair
#define lw lower_bound
#define up upper_bound
#define ff first
#define ss second
#define boost ios_base::sync_with_stdio(); cin.tie(0); cout.tie(0);
#define MOD 1000000007
#define MAX 1e18
#define MIN -1e18
#define per(i,a,b) for(ll i=b;i>=a;i--)
#define con continue
#define freopen freopen("input.txt", "r", stdin);freopen("output.txt", "w", stdout);
#define PI 3.14159265358979323846264338327950288419716939937510582097494459230781640628
// typedef tree<ll , null_type, less<ll>, rb_tree_tag, tree_order_statistics_node_update> indexed_set;
// template< typename T>
// using indexed_set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;
ll N , n, m, mid, res,pos, mn, mx, sum, h1, h2, arr[3234567],arr1[1234567],k, i, j, h, a, x, y, z,par[1234567],ans;
bool used[1234567];
ll tp[1234567];
ll dx[4]={-1,1,0,0},dy[4]={0,0,-1,1},c1[123][123];
//ll jump[22][223456];
//ll lvl[1234567];
//ll bit[1234567];
//ll timer;
//ll st[1234567],endd[1234567];
//ll dp[5005][5005];
ll findGap(int T, int n){
ll l=0,r=MAX,mn,mx;
if(T==1){
for(int i=1;i<=(n+1)/2;i++){
MinMax(l,r,&mn,&mx);
arr[i] = mn;
arr[n+1-i] = mx;
l = mn+1;
r = mx-1;
}
ans=0;
for(int i=1;i<n;i++)ans=max(a[i+1]-a[i]);
return ans;
}
else{
MinMax(l,r,&mn,&mx);
ll ans = ceil((mx-mn+1)/n);
while(l!=r){
MinMax(l+1,l+ans,&mn,&mx);
if(mx != -1){
l=mx;
}
else{
x=ans;
while(mn!=-1){
x*=2;
MinMax(l+1,l+x,&mn,&mx);
}
ans = max(ans , mn-l);
l=mx;
}
}
return ans;
}
}