Submission #109329

#TimeUsernameProblemLanguageResultExecution timeMemory
109329b2563125Gap (APIO16_gap)C++14
100 / 100
89 ms2040 KiB
#include<iostream>
#include<algorithm>
#include<vector>
#include "gap.h"
using namespace std;
#define vel vector<long long>
#define ll long long
#define rep(i,n) for(__int128 i=0;i<n;i++)
int pr = 1000000007;
int ref(int &a) {
	a = a % pr;
	a += pr;
	a = a % pr;
	return a;
}
long long findGap(int t, int n) {
	if (t == 1) {
		vel a(n);
		ll mn = 0; ll mx = (pr - 7);
		mx *= mx;
		rep(i, (n + 1) / 2) {
			MinMax(mn, mx, &mn, &mx);
			a[i] = mn;
			a[n - 1 - i] = mx;
			mn++; mx--;
		}
		ll ans = 0;
		rep(i, n - 1) { ans = max(ans, a[i + 1] - a[i]); }
		return ans;
	}
	if (t == 2) {
		__int128 N = n;
		long long a1; long long an;
		long long INF = pr - 7;
		INF *= INF;
		MinMax(0, INF, &a1, &an);
		__int128 X = an - a1 + 1;
		long long now_min = a1;
		long long ans = 0;
		if (n == 2) { return an - a1; }
		N--; n--;
		rep(i, n) {
			long long mn, mx;
			__int128 j = i;
			j++;
			__int128 n1 = (X*i) / N;
			__int128 n2 = (X*j) / N;
			ll q1 = a1 + n1;
			ll q2 = a1 + n2;
			q2--;
			MinMax(q1, q2, &mn, &mx);
			if (mn != -1) {
				ans = max(mn - now_min, ans);
				now_min = mx;
			}
		}
		return ans;
	}
}

Compilation message (stderr)

gap.cpp: In function 'long long int findGap(int, int)':
gap.cpp:59:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...