Submission #1301589

#TimeUsernameProblemLanguageResultExecution timeMemory
1301589wojtaszekliszekRice Hub (IOI11_ricehub)C++20
100 / 100
9 ms1408 KiB
#include "ricehub.h"
#include <bits/stdc++.h>
using namespace std;
#define ll long long
vector<ll>cord(100005);
ll suma(int mid){
    ll mini=LLONG_MAX,sum=0;
    int med=(mid-1)/2,med2=(mid-1)/2;
    if(mid%2==1){
        med2--;
    }
    for(int i=0;i<mid;i++){
        ll comp=abs(cord[i]-cord[med]);
        sum+=comp;
    }
    int p=mid-1;
    while(cord[p]>0){
        mini=min(mini,sum);
        sum+=-cord[med+1]-cord[med2+1]+cord[p-mid+1]+cord[p+1];
        med++;
        med2++;
        p++;
    }
    return mini;
}
int besthub(int n, int l, int x[], long long b) {
    for(int i=0;i<n;i++){
        cord[i]=x[i];
    }
    int p=1,k=n,mid=(n+1)/2;
    while(k>=p){
        if(suma(mid)>b){
            k=mid-1;
        }
        else{
            p=mid+1;
        }
        mid=(k+p)/2;
    }
    return p-1;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...