Submission #768200

#TimeUsernameProblemLanguageResultExecution timeMemory
768200raysh07Gap (APIO16_gap)C++17
100 / 100
37 ms2252 KiB
#include "gap.h"
#include <bits/stdc++.h> 
using namespace std;

long long findGap(int t, int n)
{
	long long mx, mn;
	
	MinMax(1, (long long)1e18, &mn, &mx);
	
	if (t == 1){
	    vector <long long> a;
	    a.push_back(mn);
	    a.push_back(mx);
	    
	    while ((int)a.size() < n){
	        MinMax(mn + 1, mx - 1, &mn, &mx);
	        a.push_back(mn);
	        if (mn != mx)
	        a.push_back(mx);
	    }
	    
	    sort(a.begin(), a.end());
	    long long ans = 0;
	    for (int i = 1; i < n; i++) ans = max(ans, a[i] - a[i - 1]);
	    return ans;
	}
	
	long long ans = (mx - mn + n - 1) / n;
	
	long long last = mn;
	
	//go from s to t, but make jumps of size ans 
	long long curr = mn + 1;
	
	while (curr <= mx){
	    //query [curr, curr + ans]
	    long long mi, ma;
	    MinMax(curr, curr + ans, &mi, &ma);
	    curr += ans;
	    
	    if (mi == -1){
	        continue;
	    }
	    ans = max(mi - last, ans);
	    last = ma;
	}
	
	return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...