QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#693827 | #9331. Maximize the Minimum | lytqwq# | WA | 1ms | 7936kb | C++14 | 2.4kb | 2024-10-31 16:48:43 | 2024-10-31 16:48:43 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
#define N 800010
#define ll long long
#define INF 0x7fffffffffffffffLL
int read(){
int res=0,zf=1;char ch;
while((ch=getchar())<48||ch>57)if(ch=='-')zf=!zf;res=(ch^48);
while((ch=getchar())>=48&&ch<=57)res=(res<<3)+(res<<1)+(ch^48);
return zf?res:(-res);
}
ll readll(){
ll res=0;int zf=1;char ch;
while((ch=getchar())<48||ch>57)if(ch=='-')zf=!zf;res=(ch^48);
while((ch=getchar())>=48&&ch<=57)res=(res<<3)+(res<<1)+(ch^48);
return zf?res:(-res);
}
int n,m;
ll maxs,adds;
struct node{
ll s,w;int from;
}s[N<<1];
ll sa[N<<1],sb[N<<1],sap[N<<1],sbp[N<<1];
inline bool operator <(const node&x,const node&y){return x.s<y.s;}
int chk(ll d){
int lst=0;
for(int i=0;i<=n+m;i++)sap[i]=sbp[i]=-INF;
for(int i=1;i<=n+m;i++){
while(lst<i-1&&s[lst+1].s+d<=s[i].s)lst++;
if(s[i].from){
sb[i]=max(sb[i-1]+s[i].w,sa[lst]+s[i].w);
sa[i]=sa[i-1];
if(sa[lst]>0)sbp[i]=max(sbp[i-1]+s[i].w,sa[lst]+s[i].w);
else sbp[i]=sbp[i-1]+s[i].w;
sap[i]=sap[i-1];
}else{
sa[i]=max(sa[i-1]+s[i].w,sb[lst]+s[i].w);
sb[i]=sb[i-1];
if(sb[lst]>0)sap[i]=max(sap[i-1]+s[i].w,sb[lst]+s[i].w);
else sap[i]=sap[i-1]+s[i].w;
sbp[i]=sbp[i-1];
}
}
return max(sap[n+m],sbp[n+m])>=adds-maxs;
}
int main(){
int t=read();
while(t--){
n=read();m=read();maxs=readll();
adds=0;
for(int i=1;i<=n;i++){
s[i].s=readll();
s[i].from=0;
//adds+=s[i].s;
}
for(int i=1;i<=m;i++){
s[i+n].s=readll();
s[i+n].from=1;
// adds+=s[i+n].s;
}
for(int i=1;i<=n;i++){
s[i].w=readll();
adds+=s[i].w;
}
for(int i=1;i<=m;i++){
s[i+n].w=readll();
adds+=s[i+n].w;
}
if(adds<maxs)maxs=adds;
sort(s+1,s+n+m+1);
ll L=0,R=2,res=0;
while(L<=R){
ll mid=(L+R)>>1;
if(chk(mid)){
res=mid;
L=mid+1;
}else{
R=mid-1;
}
}
printf("%lld\n",res);
}
return 0;
}
/*
1
5 5 5
1 2 3 4 5
-5 -3 3 6 8
10 10 10 10 10
10 10 3 10 10
*/
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 0
Wrong Answer
time: 1ms
memory: 7936kb
input:
2 1 4 10 15 1 6 9 13 8 3 1 2 4 5 4 4 -1 5 3 2 -4 -7 8 6 2 2 3 1 1 2 3 1 1 1
output:
2 2
result:
wrong answer 1st numbers differ - expected: '14', found: '2'