QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#135446 | #6632. Minimize Median | wtn135687 | WA | 61ms | 7732kb | C++14 | 1.9kb | 2023-08-05 15:19:12 | 2023-08-05 15:19:14 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define int ll
const int N = 1e6+10,mo = 1e9+7;
template<class T>
struct BIT {
T c[N];
int size;
void resize(int s) {
size = s;
for(int i=0;i<=s;i++)c[i]=2e9;
}
T query(int x) { // 1 ... x
assert(x <= size);//检测错误输入
T s = 2e9;
for (; x; x -= x & (-x)) {
s =min(s,c[x]);
}
return s;
}
void modify(int x, T s) { // a[x] += s
assert(x != 0);
for (; x <= size; x += x & (-x)) {
c[x] =min(c[x], s);
}
}
};
int a[N],dp[N];
BIT <int>tree;
void fuck(int n){
tree.resize(n);
for(int i=n-1;i>=1;i--)dp[i]=min(dp[i+1],dp[i]);
for(int i=1;i<=n;i++){
tree.modify(n-i+1,dp[i]);
}
for(int i=1;i<=n;i++){
dp[i]=min(dp[i],tree.query(n-i+1));
for(int j=2;j<=n;j++){
if(i*j>n)break;;
dp[i*j]=min(dp[i*j],dp[i]+dp[j]);
tree.modify(n-i*j+1,dp[i*j]);
}
}
// cerr<<"dp:";for(int i=1;i<=n;i++)cerr<<dp[i]<<" \n"[i==n];
}
int n,m,k;
bool check(int mid){
ll sum=0;
for(int i=1;i<=n/2+1;i++){
if(a[i]>mid){
int kk=a[i]/(mid+1)+1;
if(kk>m)return 0;
sum+=dp[kk];
}
}
// cerr<<"sum="<<sum<<" k="<<k<<"\n";
return sum<=k;
}
inline void solve(){
cin>>n>>m>>k;
for(int i=1;i<=n;i++)cin>>a[i];
for(int i=1;i<=m;i++)cin>>dp[i];
dp[m+1]=1e18;
dp[m+2]=1e18;
m+=2;
fuck(m);
a[n+1]=2e9;
sort(a+1,a+1+n);
int r=a[n/2+2];
int l=0;
while(l<r){
int mid=l+r>>1;
bool res=check(mid);
// cerr<<"res="<<res<<"\n";
if(res)r=mid;
else l=mid+1;
}
cout<<l<<"\n";
}
signed main(){
ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
int WTN666=1;cin>>WTN666;
while(WTN666--){
solve();
}
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 2ms
memory: 7732kb
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: 61ms
memory: 7688kb
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 1 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 1 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 2790th numbers differ - expected: '0', found: '1'