QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#717444 | #9540. Double 11 | kjhhjki | WA | 1ms | 6016kb | C++20 | 1.6kb | 2024-11-06 17:58:53 | 2024-11-06 17:58:54 |
Judging History
answer
#include <bits/stdc++.h>
#define rep(i,j,k) for(int i=j;i<=(k);++i)
#define MAXN 1000005
typedef long double ld;
typedef long long ll;
int n,m,st,ed;
ll a[MAXN],sum[MAXN];
std::pair<ld,int> f[MAXN];
struct data{int pos,l,r;}seq[MAXN];
inline std::pair<ld,int> getval(int x,int y,ld k){
return std::make_pair(f[y].first+sqrtl((x-y)*(sum[x]-sum[y]))+k,f[y].second-1);
}
inline std::pair<ld,int> calc(ld k){
st=1,ed=0;
seq[++ed]=((data){0,1,n});
rep(i,1,n){
while(seq[st].r<i) ++st;
f[i]=getval(i,seq[st].pos,k);
if(seq[st].l==seq[st].r) ++st;
else ++seq[st].l;
while(st<=ed&&getval(seq[ed].l,i,k)<=getval(seq[ed].l,seq[ed].pos,k)) --ed;
if(st<=ed){
int tl=seq[ed].l,tr=seq[ed].r;
while(tl<tr){
int tmid=tl+tr+1>>1;
if(getval(tmid,i,k)<=getval(tmid,seq[ed].pos,k)) tr=tmid-1;
else tl=tmid;
}
seq[ed].r=tl;
if(tl!=n) seq[++ed]=(data){i,tl+1,n};
}
else seq[++ed]=(data){1,i+1,n};
}
return std::make_pair(f[n].first,-f[n].second);
}
inline ld solve(){
ld l=0,r=1e10;
while(r-l>1e-15){
ld mid=(l+r)/2;
if(calc(mid).second>=m) l=mid;
else r=mid;
}
return calc((l+r)/2).first-m*(l+r)/2;
}
int main(){
std::ios::sync_with_stdio(0);
std::cin.tie(0),std::cout.tie(0);
std::cin>>n>>m;
rep(i,1,n) std::cin>>a[i];
std::sort(a+1,a+n+1);
rep(i,1,n) sum[i]=sum[i-1]+a[i];
std::cout<<std::fixed<<std::setprecision(10)<<solve()<<'\n';
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 1ms
memory: 5896kb
input:
4 2 1 2 3 4
output:
6.1911471296
result:
ok found '6.191147130', expected '6.191147130', error '0.000000000'
Test #2:
score: 0
Accepted
time: 1ms
memory: 6016kb
input:
10 3 1 2 3 4 5 6 7 8 9 10
output:
22.5916253665
result:
ok found '22.591625367', expected '22.591625367', error '0.000000000'
Test #3:
score: 0
Accepted
time: 1ms
memory: 6004kb
input:
1 1 1
output:
1.0000000000
result:
ok found '1.000000000', expected '1.000000000', error '0.000000000'
Test #4:
score: 0
Accepted
time: 1ms
memory: 5752kb
input:
1 1 100000
output:
316.2277660165
result:
ok found '316.227766017', expected '316.227766017', error '0.000000000'
Test #5:
score: 0
Accepted
time: 1ms
memory: 5860kb
input:
7 1 10 47 53 9 83 33 15
output:
41.8330013268
result:
ok found '41.833001327', expected '41.833001327', error '0.000000000'
Test #6:
score: -100
Wrong Answer
time: 1ms
memory: 5968kb
input:
8 5 138 1702 119 1931 418 1170 840 1794
output:
247.4483493850
result:
wrong answer 1st numbers differ - expected: '233.9016546', found: '247.4483494', error = '0.0579162'