Submission #735872

#TimeUsernameProblemLanguageResultExecution timeMemory
735872Abrar_Al_SamitGap (APIO16_gap)C++17
38.81 / 100
50 ms1876 KiB
#include <bits/stdc++.h>
#include "gap.h"
using namespace std;

const long long INF = 1e18;


long long solve1(int N) {
	long long a[N+1];
	int l = 1, r = N;

	long long lef = 0, rit = INF;
	while(l<=r) {
		MinMax(lef, rit, &lef, &rit);
		if(l==r) {
			a[l] = lef;
			break;
		} else {
			a[l] = lef, a[r] = rit;
			++lef, --rit;
			++l, --r;
		}
	}

	long long best = 0;
	for(int i=2; i<=N; ++i) {
		best = max(best, a[i] - a[i-1]);
	}
	return best;
}
long long solve2(int N) {
	long long lef = 0;
	long long already = 1;
	bool very_first = true;

	long long absmn, absmx = INF;
	// if(N < 60) {
	// 	MinMax(0, INF, &absmn, &absmx);
	// 	lef = absmn + 1;
	// 	very_first = false;
	// }

	while(lef+already+1<=INF) {
		long long pw = already;
		while(1) {
			long long rit = min(INF, pw+lef-1);

			long long var1, var2;
			MinMax(lef, rit, &var1, &var2);
			if(var1==-1) {
				if(rit==INF) {
					return already;
				}
				pw *= 2;
			} else {
				if(!very_first) already = max(already, var1 - lef + 1), lef = var2 + 1;
				else lef = var1 + 1;
				break;
			}
		}
		very_first = false;
	}
	return already;
}
long long findGap(int T, int N) {
	if(T==1) return solve1(N);
	else return solve2(N);
}

Compilation message (stderr)

gap.cpp: In function 'long long int solve2(int)':
gap.cpp:36:12: warning: unused variable 'absmn' [-Wunused-variable]
   36 |  long long absmn, absmx = INF;
      |            ^~~~~
gap.cpp:36:19: warning: unused variable 'absmx' [-Wunused-variable]
   36 |  long long absmn, absmx = INF;
      |                   ^~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...