QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#108756 | #5123. Streets | shenxinge | WA | 610ms | 22376kb | C++14 | 1.4kb | 2023-05-26 16:40:01 | 2023-05-26 16:40:04 |
Judging History
answer
#include<bits/stdc++.h>
#define int long long
using namespace std;
constexpr int maxn(1e5+10),maxe(1e5);
int n,m,T,X[maxn],Y[maxn],A[maxn],B[maxn],va[maxn],vb[maxn],f[maxn][22],st[maxn],top,inf,mx,c;
inline int F(int i,int j){return i*vb[j]+j*va[i];}
inline int check(int i,int j){
for(int l=20;l;l--) if(f[f[j][l]][0]&&F(i,f[j][l])>=F(i,f[f[j][l]][0])) j=f[j][l];
if(j!=mx&&F(i,f[j][0])<=c) return true; else return F(i,j)<=c;
}
signed main(){
ios::sync_with_stdio(false),cin.tie(nullptr);
cin >> n >> m >> T;memset(va,0x3f,sizeof va),memset(vb,0x3f,sizeof vb),inf=vb[0];
for(int i=1;i<=n;i++) cin >> X[i];for(int i=1;i<=n;i++) cin >> A[i];
for(int i=1;i<=m;i++) cin >> Y[i];for(int i=1;i<=m;i++) cin >> B[i];
for(int i=1;i<=n;i++) for(int j=1;j<i;j++) va[X[i]-X[j]]=min(va[X[i]-X[j]],A[i]+A[j]);
for(int i=1;i<=m;i++) for(int j=1;j<i;j++) vb[Y[i]-Y[j]]=min(vb[Y[i]-Y[j]],B[i]+B[j]);
for(int i=maxe;i;i--) if(vb[i]!=inf){
while(top>1&&(vb[st[top]]-vb[i])*(st[top]-i)>=(vb[st[top-1]]-vb[st[top]])*(st[top-1]-st[top])) top--;
if(!top) mx=i; else f[i][0]=st[top]; st[++top]=i;
}
for(int i=1;i<=20;i++) for(int u=1;u<=maxe;u++) f[u][i]=f[f[u][i-1]][i-1];
while(T--){cin >> c;int ans=0;
for(int i=maxe,p=1;i;i--) if(va[i]!=inf) while(true){
while(p<=mx&&vb[p]==inf) p++;
if(p<=mx&&check(i,p)) ans=max(ans,i*p),p++;
else break;
}cout << ans << '\n';
}
return 0;
}
詳細信息
Test #1:
score: 100
Accepted
time: 20ms
memory: 22044kb
input:
3 4 20 1 3 4 3 1 2 1 3 4 7 4 2 1 2 1 5 6 7 9 10 11 12 15 16 17 22 23 28 30 35 43 47 49 57
output:
0 0 1 1 1 2 2 3 3 4 4 6 6 9 9 12 12 12 18 18
result:
ok 20 numbers
Test #2:
score: -100
Wrong Answer
time: 610ms
memory: 22376kb
input:
4995 4998 100 4 7 20 34 44 100 102 130 175 198 205 250 257 259 267 278 300 324 337 346 353 364 403 427 439 440 451 523 532 534 555 599 634 639 756 802 805 825 855 859 890 905 912 915 953 989 1014 1031 1052 1059 1097 1124 1183 1216 1297 1308 1337 1342 1361 1392 1400 1421 1451 1471 1523 1537 1542 1619...
output:
9991201920 9892820960 2587511860 9859439425 8879702340 9986903784 9882703404 9859439425 9275666650 6591142320 9242863770 3455112440 8182361570 9857548260 9903504408 9859439425 9859439425 9760617730 9857548260 6692905800 2587511860 9240534020 9874285344 3498166220 8360168090 9820211688 2699248350 924...
result:
wrong answer 2nd numbers differ - expected: '9941157660', found: '9892820960'