제출 #775515

#제출 시각아이디문제언어결과실행 시간메모리
775515anaduguleanuGap (APIO16_gap)C++14
100 / 100
70 ms5832 KiB
#include <iostream>
#include <set>
#include "gap.h"
#define INF 1000000000000000000
using namespace std;
set <long long> s;
long long findGap(int T, int N)
{
    if (T == 1)
    {
        long long minimum, maximum;
        MinMax(1, INF, &minimum, &maximum);
        s.insert(minimum);
        s.insert(maximum);
        for (int i = 1; i < (N + 1) >> 1; i++)
        {
            long long val1, val2;
            MinMax(minimum + 1, maximum - 1, &val1, &val2);
            s.insert(val1);
            s.insert(val2);
            minimum = val1;
            maximum = val2;
        }
        long long maxGap = 0, last = minimum;
        for (auto it : s)
        {
            maxGap = max(maxGap, it - last);
            last = it;
        }
        return maxGap;
    }
    else
    {
        long long minimum, maximum;
        MinMax(1, INF, &minimum, &maximum);
        long long gapLength;
        if ((maximum - minimum) % (N - 1) == 0)
            gapLength = (maximum - minimum) / (N - 1);
        else
            gapLength = (maximum - minimum) / (N - 1) + 1;
        for (long long i = minimum + 1; i <= maximum - 1; i = i + gapLength)
        {
            long long val1, val2;
            MinMax(i, i + gapLength - 1, &val1, &val2);
            s.insert(val1);
            s.insert(val2);
        }
        s.erase(-1);
        long long maxGap = 0, last = minimum;
        for (auto it : s)
        {
            maxGap = max(maxGap, it - last);
            last = it;
        }
        return maxGap;
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...