Submission #1148613

#TimeUsernameProblemLanguageResultExecution timeMemory
1148613dostsGap (APIO16_gap)C++20
100 / 100
40 ms1952 KiB
#include "gap.h"
#include <bits/stdc++.h>
#pragma GCC target("avx2")
#pragma GCC optimize("O3,unroll-loops")
using namespace std;
#define int long long
#define pii pair<int,int>
#define ff first
#define ss second
#define sp << " " <<    
#define all(cont) cont.begin(),cont.end()
#define vi vector<int>

const int inf = 1e18,MOD = 998244353,B = 250;

int findGap(int32_t T, int32_t N)
{
	int ans = 0;
	int l,r;
	int* lp = &l,*rp = &r;
	int u = 0,v = inf;
	MinMax(u,v,lp,rp);
	int son = *rp,bas = *lp;
	if (T == 2) {
		int L = son-bas;
		int x = (L+N-2)/(N-1);
		int sonlst = bas;
		for (int i = bas+1;i<=son;i+=x) {
			MinMax(i,i+x-1,lp,rp);
			if (*lp != -1) ans = max(ans,*lp-sonlst);
			if (*rp != -1) sonlst = *rp;
		}
		return ans;
	}
	else {
		vi arr(N);
		int ptr = 0,ptr2 = N-1;
		arr[ptr++] = *lp;
		arr[ptr2--] = *rp;
		while (ptr <= ptr2) {
			MinMax(arr[ptr-1]+1,arr[ptr2+1]-1,lp,rp);
			arr[ptr++] = *lp;
			arr[ptr2--] = *rp;
		}
		for (int i=0;i<N-1;i++) ans = max(ans,arr[i+1]-arr[i]);
		return ans;
	}
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...