Submission #84387

#TimeUsernameProblemLanguageResultExecution timeMemory
84387Alexa2001Gap (APIO16_gap)C++17
100 / 100
102 ms3564 KiB
#include "gap.h"
#include <bits/stdc++.h>

using namespace std;
typedef long long ll;
const ll lim = 1e18;

long long findGap(int T, int N)
{
    ll *A, *B;
    ll ans = 0;
    A = new ll(); B = new ll();

    if(T == 1)
    {
        ll x = 0, y = lim;
        int i;
        for(i=0; i<(N+1)/2; ++i)
        {
            MinMax(x, y, A, B);
            if(i)
            {
                ans = max(ans, *A - x + 1);
                ans = max(ans, y - *B + 1);
            }
            x = *A + 1;
            y = *B - 1;
        }
        if(N%2==0) ans = max(ans, y-x+2);
        return ans;
    }

    MinMax(0, lim, A, B);
    ll X, Y;
    X = *A, Y = *B;

    ll i, S = (Y-X) / (N-1) + 1;
    vector<ll> endpoints;

    for(i = 0; i <= Y-X; i += S)
    {
        MinMax(X+i, X + min(i+S-1, Y-X), A, B);
        if(*A == -1) continue;
        endpoints.push_back(*A);
        endpoints.push_back(*B);
    }
    endpoints.push_back(Y);

    int j;
    for(j=0; j<endpoints.size()-1; ++j)
        ans = max(ans, endpoints[j+1] - endpoints[j]);
    return ans;
}

Compilation message (stderr)

gap.cpp: In function 'long long int findGap(int, int)':
gap.cpp:50:15: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(j=0; j<endpoints.size()-1; ++j)
              ~^~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...