Submission #876163

#TimeUsernameProblemLanguageResultExecution timeMemory
876163PagodePaivaGap (APIO16_gap)C++17
0 / 100
3087 ms1460 KiB
    #include<bits/stdc++.h>
    #define MAXN 100010
     
    using namespace std;
     
    #include "gap.h"
     
    int query(long long a, long long b, long long &x, long long &y){
        MinMax(a, b, &x, &y);
        return 0;
    }
     
    long long res[MAXN];
     
    long long findGap(int T, int n){
        long long l = 0, r = 1e18;

        query(l, r, res[0], res[n-1]);

        long long difmax = res[n-1] - res[0];
        long long resp = difmax/n;

        long long val = res[0];

        while(val <= res[n-1]){
            long long x, y;
            query(val+1, val+resp, x, y);

            if(x == -1){
                l = resp+1; r = res[n-1] - val;

                while(l < r){
                    int mid = (l+r)/2;

                    query(val+1, val+mid, x, y);

                    if(x == -1){
                        l = mid+1;
                    }

                    else{
                        r = y-val-1;
                    }
                }

                // cout << val << ' ' << l << ' ' << r << '\n';
                resp = max(l, r)+1;
                query(val+1, val+resp, x, y);
                val = y+1;
            }

            else{
                val = y+1;
            }
        }

        return resp;
    }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...