题目链接 #include<iostream> #include<cstring> #include<algorithm> #include<unordered_map> using namespace std; //#define int long long const int N = 100010; int tr[N]; int n,m; int lowbit(int x) { return x&-x; } void add(int x,int v) { for(int i=x;i<=n;i+=lowbit(i))tr[i]+=v; } int query(int x) { int res=0; for(int i=x;i;i-=lowbit(i))res+=tr[i]; return res; } signed main() { cin>>n; int res=0; for(int i=1;i<=n;i++) { int x;scanf("%d",&x); res+=query(n)-query(x); add(x,1); } res=res&1; cin>>m; while(m--) { int l,r; scanf("%d%d",&l,&r); int t=(r-l)*(r-l+1)>>1; res^=t&1; if(res)printf("dislike\n"); else printf("like\n"); } }