Submission #880080

#TimeUsernameProblemLanguageResultExecution timeMemory
880080JakobZorzGap (APIO16_gap)C++14
100 / 100
40 ms4436 KiB
#include"gap.h"
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
typedef long long ll;

ll find_gap1(int n){
    vector<ll>vec1,vec2;
    ll l=0,r=1e18;
    while(true){
        MinMax(l,r,&l,&r);
        if(l==r){
            if(l!=-1)
                vec1.push_back(l);
            break;
        }
        vec1.push_back(l);
        vec2.push_back(r);
        l++;
        r--;
        if((int)vec1.size()+(int)vec2.size()==n)
            break;
    }
    reverse(vec2.begin(),vec2.end());
    vec1.insert(vec1.end(),vec2.begin(),vec2.end());
    ll res=0;
    for(int i=1;i<n;i++)
        res=max(res,vec1[i]-vec1[i-1]);
    return res;
}

ll find_gap2(int n){
    ll mn,mx;
    MinMax(0,1e18,&mn,&mx);
    ll gap=(mx-mn+n)/(n-1);
    ll last=mn;
    ll res=0;
    for(ll i=mn+1;i<mx;i+=gap+1){
        ll i1,i2;
        MinMax(i,i+gap,&i1,&i2);
        if(i1!=-1){
            res=max(res,i1-last);
            last=i2;
        }
    }
    
    return res;
}

ll findGap(int t,int n){
    if(t==1){
        return find_gap1(n);
    }else{
        return find_gap2(n);
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...