QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#526277 | #5669. Traveling in Jade City | Mitsukasa_Ayase | WA | 293ms | 40176kb | C++20 | 2.6kb | 2024-08-21 12:54:33 | 2024-08-21 12:54:33 |
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);
if(y>n){
cout<<x<<" "<<y<<endl;
exit(0);
}
// assert(min(qr(x,y-1),qr(y,x+n-1))>=0);
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);
// assert(x>n*2);
// assert(qr(x,y-1)>=0);
return qr(x,y-1);
}
int main(){
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=1e18;
if(y<=n){
if(n>=100)
cout << (y<=n)<<"fk "<<y<<" "<<n<<endl;
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;
}
/*
6 4 1 3
1000000000 1000000000 1000000000 1000000000 1000000000 1000000000
1400000000 1400000000
q 1 4
x 0
q 1 4
*/
详细
Test #1:
score: 100
Accepted
time: 1ms
memory: 5636kb
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: 5864kb
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: 293ms
memory: 40176kb
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:
1fk 428456 1000000 177406400 1fk 1556505 1000000 832172 1556505
result:
wrong answer 1st lines differ - expected: '177406400', found: '1fk 428456 1000000'