QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#134911 | #6632. Minimize Median | BoulevardDust# | WA | 28ms | 7744kb | C++17 | 1.1kb | 2023-08-05 09:57:09 | 2023-08-05 09:57:10 |
Judging History
answer
#include<bits/stdc++.h>
#define N 1000005
#define re
#define ll long long
using namespace std;
int n,m,K,q,T;
inline void Rd(int &res){
re char c;res=0;
while(c=getchar(),c<48);
do res=(res<<3)+(res<<1)+(c^48);
while(c=getchar(),c>47);
}
int a[N],c[N],u;
ll f[N];
int main(){
Rd(T);
while(T--){
Rd(n);Rd(m);Rd(K);
for(re int i=1;i<=n;i++)Rd(a[i]);
sort(a+1,a+n+1);
for(re int i=1;i<=m;i++)Rd(c[i]);
for(re int i=m-1;i>=1;i--)c[i]=min(c[i],c[i+1]);
f[1]=0;
for(re int i=2;i<=m+1;i++)f[i]=1e15;
for(re int i=1;i<=m;i++){
for(re int j=2;j<=m;j++){
int x=i*j;
if(x>m){
f[m+1]=min(f[m+1],f[i]+c[j]);
break;
}
f[x]=min(f[x],f[i]+c[j]);
}
}
for(re int i=m;i>=1;i--)f[i]=min(f[i],f[i+1]);
u=(n+1)/2;
int l=0,r=m,ans=m;
while(l<=r){
int mid=(l+r)>>1;
ll res=0;
for(re int i=1;i<=u;i++)if(a[i]>mid){
int t=a[i]+1;
if(mid!=0)t=a[i]/mid;
while(a[i]/t>mid)t++;
res+=f[t];
}
if(res>K)l=mid+1;
else ans=mid,r=mid-1;
}
printf("%d\n",ans);
for(re int i=0;i<=m+1;i++)f[i]=0;
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 2ms
memory: 7696kb
input:
3 3 5 0 2 5 2 3 2 4 6 13 3 5 3 2 5 3 3 2 4 6 13 3 5 6 2 5 2 3 2 4 6 13
output:
2 2 1
result:
ok 3 number(s): "2 2 1"
Test #2:
score: -100
Wrong Answer
time: 28ms
memory: 7744kb
input:
100000 5 10 5 3 7 1 10 10 11 6 11 6 1 8 9 1 3 1 5 6 51 2 2 2 5 1 42 61 26 59 100 54 5 10 76 7 5 8 4 7 97 4 44 83 61 45 24 88 44 44 5 8 90 1 1 5 1 3 35 15 53 97 71 83 26 7 5 3 52 1 1 3 1 1 22 6 93 5 6 28 6 6 1 3 1 9 31 2 19 10 27 5 8 31 3 6 2 1 2 32 29 13 7 57 34 9 5 5 6 75 3 3 4 5 4 40 56 38 60 17 3...
output:
0 2 0 0 0 0 0 0 3 4 0 0 0 0 1 1 0 0 0 0 1 1 0 2 2 0 0 0 0 0 2 0 0 0 2 2 0 1 0 0 0 0 1 0 2 4 1 1 0 0 2 0 0 7 0 2 0 0 0 1 1 0 1 0 1 0 0 2 1 0 6 3 0 0 1 0 2 0 0 3 0 1 0 1 0 2 0 0 0 0 1 2 2 4 0 0 0 0 0 0 1 2 2 1 2 2 0 1 1 0 0 0 0 0 1 2 1 4 1 0 4 1 2 1 0 0 0 0 1 2 1 0 0 2 3 1 0 1 1 1 0 1 5 0 1 2 0 2 0 0 ...
result:
wrong answer 56th numbers differ - expected: '1', found: '2'