Submission #1301564

#TimeUsernameProblemLanguageResultExecution timeMemory
1301564wojtaszekliszekRice Hub (IOI11_ricehub)C++20
0 / 100
1 ms1848 KiB

#include <bits/stdc++.h>
using namespace std;
#define ll long double
vector<ll>cord(100000);
ll sum(int mid){
    if(mid%2==0){
        ll mini=LLONG_MAX,sum=0;
        int med=mid/2;
        for(int i=0;i<mid;i++){
            ll comp=cord[i]-(cord[med]+cord[med+1])/2;
            sum+=(comp<0?comp*-1:comp);
        }
        int p=mid-1;
        while(cord[p]>0){
            mini=min(mini,sum);
            sum+=-2*cord[med+1]+cord[p-mid+1]+cord[p+1];
            med++;
            p++;
            //cout<<sum<<' '<<mid<<'\n';
        }
        return mini;
    }
    ll mini=LLONG_MAX,sum=0;
    int med=(mid-1)/2;
    for(int i=0;i<mid;i++){
       ll comp=cord[i]-cord[med];
       sum+=(comp<0?comp*-1:comp);
    }
    int p=mid-1;
    while(cord[p]>0){
       mini=min(mini,sum);
       sum+=-cord[med]-cord[med+1]+cord[p-mid+1]+cord[p+1];
       med++;
       p++;
       //cout<<sum<<' '<<mid<<'\n';
    }
    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(sum(mid)>b){
            k=mid-1;
        }
        else{
            p=mid;
        }
        mid=(k+p)/2;
    }
    cout<<mid;
}

Compilation message (stderr)

ricehub.cpp: In function 'int besthub(int, int, int*, long long int)':
ricehub.cpp:55:1: warning: no return statement in function returning non-void [-Wreturn-type]
   55 | }
      | ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...