QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#526205 | #5669. Traveling in Jade City | solar_express# | WA | 470ms | 43096kb | C++23 | 2.3kb | 2024-08-21 12:14:49 | 2024-08-21 12:14:50 |
Judging History
answer
#include<bits/stdc++.h>
#define ll long long
#define N 1000005
using namespace std;
int M,n,k,m,q,a[N*3],vis[N*3];
ll tr[N*3];
void modify(int x,int v){
for(int i=x;i<=M;i+=i&(-i))
tr[i]+=v;
}
ll qry(int x){
ll res=0;
for(int i=x;i;i-=i&(-i)) res+=tr[i];
return res;
}
ll qr(int l,int r){
return qry(r)-qry(l-1);
}
ll cirdis(int x,int y){
if(x>y) swap(x,y);
return min(qr(x,y-1),qr(y,x+n-1));
}
int upd(int x){
if(x==1) x=n*2+1;
else if(x==k) x=n*2+m+2;
else x=n+x+1;
}
ll arcdis(int x,int y){
if(x>y) swap(x,y);
return qr(x,y-1);
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
cin>>n>>k>>m>>q;
for(int i=1;i<=n;++i){
cin>>a[i];
a[i+n]=a[i];
}
for(int i=1;i<=m+1;++i)
cin>>a[n*2+i];
M=n*2+m+1;
for(int i=1;i<=M;++i) modify(i,a[i]);
for(int i=1;i<=q;++i){
string s;
int x,y;
cin>>s;
if(s[0]=='q'){
cin>>x>>y;
if(x>y) swap(x,y);
ll dis=1e9;
if(y<=n){
dis=min(dis,cirdis(x,y));
dis=min(dis,cirdis(x,1)+arcdis(n*2+1,n*2+m+2)+cirdis(k,y));
dis=min(dis,cirdis(x,k)+arcdis(n*2+m+2,n*2+1)+cirdis(1,y));
}else if(x>n){
int xx=upd(x),yy=upd(y);
if(xx>yy) swap(xx,yy);
dis=min(dis,arcdis(xx,yy));
dis=min(dis,arcdis(xx,n*2+1)+cirdis(1,k)+arcdis(yy,n*2+m+2));
}else{
int yy=upd(y);
dis=min(dis,cirdis(x,1)+arcdis(n*2+1,yy));
dis=min(dis,cirdis(x,k)+arcdis(n*2+m+2,yy));
}
if(dis>=1e9) cout<<"impossible\n";
else cout<<dis<<"\n";
}else if(s[0]=='c'){
cin>>x;
if(vis[x]){
modify(x,-1e9);
modify(x+n,-1e9);
}else{
modify(x,1e9);
modify(x+n,1e9);
}
vis[x]^=1;
}else{
cin>>x;
x+=2*n+1;
if(vis[x]){
modify(x,-1e9);
}else{
modify(x,1e9);
}
vis[x]^=1;
}
}
return 0;
}
详细
Test #1:
score: 100
Accepted
time: 1ms
memory: 5876kb
input:
4 3 1 9 2 3 8 4 1 1 q 3 4 x 0 q 3 4 c 3 q 3 4 c 1 q 3 4 x 0 q 3 4
output:
6 8 9 impossible 6
result:
ok 5 lines
Test #2:
score: 0
Accepted
time: 1ms
memory: 5836kb
input:
4 3 1 9 2 3 8 4 1 1 q 3 4 x 0 q 3 4 c 3 q 3 4 c 1 q 3 4 x 0 q 3 4
output:
6 8 9 impossible 6
result:
ok 5 lines
Test #3:
score: -100
Wrong Answer
time: 470ms
memory: 43096kb
input:
1000000 999999 1000000 1000000 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 2...
output:
177406400 -877735200 -3129672000 -1060719800 impossible impossible impossible impossible -909057600 -2042321200 impossible -2038494400 -8841000 impossible -1193400 -883684600 -9971497600 -8921901000 -811421600 impossible -2862579200 impossible -17964660600 impossible -4820156600 -2020322200 impossib...
result:
wrong answer 2nd lines differ - expected: '122264600', found: '-877735200'