QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#526286#5669. Traveling in Jade CityMitsukasa_AyaseCompile Error//C++202.7kb2024-08-21 12:57:372024-08-21 12:57:37

Judging History

你现在查看的是最新测评结果

  • [2024-08-21 12:57:37]
  • 评测
  • [2024-08-21 12:57:37]
  • 提交

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 << typeof(y) << typeof(n) << (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
*/

详细

answer.code: In function ‘int upd(int)’:
answer.code:32:1: warning: no return statement in function returning non-void [-Wreturn-type]
   32 | }
      | ^
answer.code: In function ‘int main()’:
answer.code:59:29: error: ‘typeof’ was not declared in this scope; did you mean ‘typedef’?
   59 |                     cout << typeof(y) << typeof(n) << (y<=n)<<"fk "<<y<<" "<<n<<endl;
      |                             ^~~~~~
      |                             typedef