제출 #947248

#제출 시각아이디문제언어결과실행 시간메모리
947248NValchanovGap (APIO16_gap)C++17
0 / 100
3100 ms4096 KiB
#include <bits/stdc++.h>
#include "gap.h"

#define endl '\n'

using namespace std;

typedef long long ll;

const ll INF = 1e18;

ll t,n;

ll solve_t1()
{
    vector <ll> a;
    ll left = 0;
    ll right = INF;
    ll minel;
    ll maxel;
    ll cnt = 0;

    while(left <= right && 2 * cnt < n)
    {
        MinMax(left, right, &minel, &maxel);

        a.push_back(minel);
        a.push_back(maxel);

        cnt++;

        left = minel + 1;
        right = maxel - 1;
    }
    sort(a.begin(), a.end());
    ll ans = 0;
    for(int i = 1; i < n; i++)
    {
        ans = max(ans, a[i] - a[i - 1]);
    }
    return ans;
}

ll solve_t2()
{
    ll minel;
    ll maxel;

    MinMax(0, INF, &minel, &maxel);

    ll cnt = (maxel - minel + 1) / 2;

    ll ans = 0;
    ll last = minel;

    for(int i = minel; i <= maxel; i += cnt)
    {
        MinMax(i, i + cnt, &minel, &maxel);

        if(minel == -1)
        {
            ans = max(ans, minel - last);
            last = maxel;
        }
    }
    return ans;
}

ll findGap(int T, int N)
{
    t = T;
    n = N;
    if(t == 1)
        return solve_t1();
    else if(t == 2)
        return solve_t2();
    else
        assert(false);
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...