제출 #82277

#제출 시각아이디문제언어결과실행 시간메모리
82277Bodo171Gap (APIO16_gap)C++14
100 / 100
83 ms2192 KiB
#include "gap.h"
#include <iostream>
#include <climits>
using namespace std;
const int nmax=100005;
long long v[nmax];
long long mx,st,dr,act,inf,sup,i;
int n;
long long findGap(int T, int N)
{
    n=N;
    if(T==1)
    {
        mx=0;
        v[0]=-1;v[n+1]=1LL*1e18;
        v[n+1]++;//don't mess with 1e18
        for(i=1;i<=n/2;i++)
        {
            MinMax(v[i-1]+1,v[n-i+2]-1,&v[i],&v[n-i+1]);
        }
        if((n&1))
        {
            MinMax(v[n/2]+1,v[n/2+2]-1,&v[(n+1)/2],&sup);
        }
        for(i=1;i<n;i++)
            mx=1LL*max(mx,1LL*v[i+1]-v[i]);
        return mx;
    }
    act=-1;
    long long mare=1LL*1e18;
    MinMax(0,mare,&inf,&sup);
    long long nn=n,ans=0;
    long long def=1LL*(sup-inf)/(nn-1);
    if((sup-inf)%(nn-1))
        def+=1LL;
    act=1LL*inf;ans=1LL*def;
    long long dr_vechi=inf;
    for(long long i=1;i<=n-1&&act;i++)
    {
            MinMax(act+1LL*(i-1)*def+1,act+1LL*i*def,&st,&dr);
            if(dr!=-1)
            {
                ans=1LL*max(1LL*st-dr_vechi,ans);
                dr_vechi=dr;
            }
    }//am schimbat ca poate nu e eval bun
	return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...