Submission #1306993

#TimeUsernameProblemLanguageResultExecution timeMemory
1306993namhhGap (APIO16_gap)C++20
100 / 100
40 ms3236 KiB
#include<bits/stdc++.h>
#include "gap.h"
using namespace std;
#define ll long long
#define pii pair<int,int>
#define fi first
#define se second
const int M = 1e5+5;
ll a[M];
ll findGap(int T, int N){
 if(T == 1){
  ll mn,mx;
  MinMax(1,1e18,&mn,&mx);
  a[1] = mn;
  a[N] = mx;
  for(int i = 2; i <= (N+1)/2; i++){
   ll mnn,mxx;
   MinMax(a[i-1]+1,a[N-i+2]-1,&mnn,&mxx);
   a[i] = mnn;
   a[N-i+1] = mxx;
  }
  ll ans = 0;
  for(int i = 2; i <= N; i++) ans = max(ans,a[i]-a[i-1]);
  return ans;
 }
 else{
  ll mn,mx;
  MinMax(1,1e18,&mn,&mx);
  a[1] = mn;
  a[N] = mx;
  ll gap = (mx-mn+N-2)/(N-1);
  ll ans = gap;
  ll cur = a[1];
  ll sta = a[1]+1;
  while(true){
   ll mnn,mxx;
   ll l = sta;
   ll r = min(l+gap,a[N]);
   MinMax(l,r,&mnn,&mxx);
   if(mnn != mxx){
    ans = max(ans,mnn-cur);
    cur = mxx;
   }
   else{
    if(mnn != -1){
     ans = max(ans,mnn-cur);
        cur = mnn;
    }
   }
   sta += gap+1;
   if(r == a[N]) break;
  }
  return ans;
 }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...