제출 #668351

#제출 시각아이디문제언어결과실행 시간메모리
668351danikoynovGap (APIO16_gap)C++14
100 / 100
67 ms5788 KiB
#include "gap.h"
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;

long long findGap(int T, int N)
{
    if (T == 1)
    {
    ll lf = 0, rf = 1e18, mn, mx;
   set < ll > st;
   int nn = 0;
   while(nn < N)
    {
        MinMax(lf, rf, &mn, &mx);
        st.insert(mn);
        st.insert(mx);
        lf = mn + 1;
        rf = mx - 1;
        nn += 2;
    }

    ll ans = 0;
    ll last = -1;
    for (auto it : st)
    {
        if (last != -1)
            ans = max(ans, it - last);
        last = it;
    }

    return ans;
    }
    else
    {
       ll lf = 0, rf = 1e18, mn, mx, dn, dx;
       MinMax(lf, rf, &mn, &mx);
       if (N == 2)
       {
           return mx - mn;
       }

       ll len = (mx - mn - 1) / (N - 1);
       if ((mx - mn - 1) % (N - 1) != 0)
        len ++;
       ll last = mn, ans = 0;
       for (int i = 0; i < N; i ++)
       {
           ll s = i * len + mn + 1, e = (i + 1) * len + mn;
           MinMax(s, e, &dn, &dx);
           if (dn != -1)
           {
               ans = max(ans, dn - last);
               last = dx;
           }

       }
       ans = max(ans, mx - last);
       return ans;;
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...