NC20861. 兔子的逆序对
描述
输入描述
第一行一个整数 n,表示序列的大小。
第二行 n 个整数ai 表示序列的各个元素。
第三行一个整数m,表示操作个数。
接下来 m 行,每行两个整数 l,r,表示反转的区间。
输出描述
输出共m行每行一个字符串,表示反转后序列逆序对个数的奇偶性,如果是逆序对个数奇数,输出"dislike"(不含引号),如果是偶数,输出"like"。
示例1
输入:
4 1 2 3 4 4 1 2 3 4 1 4 2 3
输出:
dislike like like dislike
说明:
注意:以下的(i,j)指的是位置 i 和位置 jC++(clang++ 11.0.1) 解法, 执行用时: 907ms, 内存消耗: 13512K, 提交时间: 2023-04-06 16:01:58
#include<bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<int,int> PII; int main(){ int n,t,m; int a[100005]; scanf("%d",&n); for(int i=1;i<=n;i++){ scanf("%d",&a[i]); } scanf("%d",&t); for(int i=1;i<=n-1;i++){ for(int j=i+1;j<=n;j++){ if(a[i]>a[j])m++; } } m%=2; while(t--){ int l,r; scanf("%d %d",&l,&r); int s=r-l+1; s/=2; if(s%2!=0)m++; if(m%2==0)printf("like\n"); else printf("dislike\n"); } }