Submission #68126

#TimeUsernameProblemLanguageResultExecution timeMemory
68126shoemakerjoGap (APIO16_gap)C++14
100 / 100
91 ms3568 KiB
#include "gap.h"
#include <bits/stdc++.h>

using namespace std;
#define ll long long

ll findGap(int T, int N)
{
	if (T == 1) {
		vector<ll> nums;
		ll lo = 1;
		ll hi = 1000000000000000000LL;
		int tseen = 0;
		while (lo < hi) {
			ll c1, c2;
			MinMax(lo, hi, &c1, &c2);
			nums.push_back(c1);
			nums.push_back(c2);
			tseen += 2;
			if (tseen >= N) break;
			lo = c1+1;
			hi = c2-1;
		}
		ll ans = 0LL;
		sort(nums.begin(), nums.end());
		for (int i = 1; i < nums.size(); i++) {
			ans = max(ans, nums[i]-nums[i-1]);
		}
		return ans;
	}

	//this is for T = 2

	ll lo, hi;
	MinMax(1, 1000000000000000000LL, &lo, &hi);
	ll alph = (hi-lo)/N;
	if ((hi-lo)%N != 0) alph+=1LL;
	vector<ll> nums; //all the ones we care about
	ll st = lo+1LL;
	nums.push_back(lo);
	while (st <= hi) {
		ll c1, c2;
		MinMax(st, st+alph, &c1, &c2);
		if (c1 != -1) {
			nums.push_back(c1);
			nums.push_back(c2);
		}
		st += alph+1LL;
	}
	ll ans = alph;
	for (int i = 1; i < nums.size(); i++) {
		ans = max(ans, nums[i]-nums[i-1]);
	}

	return ans;
}

Compilation message (stderr)

gap.cpp: In function 'long long int findGap(int, int)':
gap.cpp:26:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for (int i = 1; i < nums.size(); i++) {
                   ~~^~~~~~~~~~~~~
gap.cpp:51:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for (int i = 1; i < nums.size(); i++) {
                  ~~^~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...