제출 #5972

#제출 시각아이디문제언어결과실행 시간메모리
5972baneling100Rice Hub (IOI11_ricehub)C++98
100 / 100
28 ms4992 KiB
#include "ricehub.h"
#include <stdlib.h>

int besthub(int R, int L, int X[], long long B)
{
    int i, j, left=1, mid, right=R, x, ok, ans;
    long long hab;

    while(left<=right)
    {
        mid=(left+right)/2;
        x=(mid-1)/2;
        hab=ok=0;
        for(i=0 ; i<mid ; i++)
            hab+=abs((long long)X[x]-(long long)X[i]);
        if(hab<=B)
            ok=1;
        for(i=1 ; i<=R-mid ; i++)
        {
            j=i+mid-1;
            if(mid%2)
                hab-=(long long)X[x++]-(long long)X[i-1];
            else
                hab-=(long long)X[++x]-(long long)X[i-1];
            hab+=(long long)X[j]-(long long)X[x];
            if(hab<=B)
                ok=1;
        }
        if(ok)
        {
            left=mid+1;
            ans=mid;
        }
        else
            right=mid-1;
    }
    return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...