This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <iostream>
#include <stdio.h>
#include <vector>
#include "gap.h"
using namespace std;
typedef long long llong;
const llong MAXVAL = 1000000000000000000LL;
llong solveSmall(int N)
{
llong minVal, maxVal;
llong L = 0, R = MAXVAL;
int pL = 0, pR = N - 1;
vector<llong> nums(N);
while(pL <= pR)
{
MinMax(L, R, &minVal, &maxVal);
nums[pL] = minVal;
nums[pR] = maxVal;
pL++;
pR--;
L = minVal + 1;
R = maxVal - 1;
}
llong ans = 0;
for (int i = 1; i < nums.size(); i++)
{
ans = max(ans, nums[i] - nums[i - 1]);
}
return ans;
}
llong solveBig(int N)
{
llong minVal, maxVal;
llong curVal, endVal;
llong bestGap = 0;
MinMax(0, MAXVAL, &curVal, &endVal);
llong curGap = (endVal - curVal) / (N - 1);
if ( (endVal - curVal) % (N - 1) != 0 )
curGap++;
curGap--;
bestGap = curGap;
while(curVal != endVal)
{
MinMax(curVal + 1, curVal + curGap, &minVal, &maxVal);
if (minVal == -1)
{
bestGap = max(bestGap, curGap);
curGap = curGap * 2 + 2;
}
else
{
bestGap = max(bestGap, minVal - curVal);
curGap = bestGap;
curVal = maxVal;
}
}
return bestGap;
}
llong findGap(int T, int N)
{
if (T == 1)
return solveSmall(N);
else
return solveBig(N);
}
/*
int main()
{
}
*/
Compilation message (stderr)
gap.cpp: In function 'llong solveSmall(int)':
gap.cpp:31:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
31 | for (int i = 1; i < nums.size(); i++)
| ~~^~~~~~~~~~~~~
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |