https://atcoder.jp/contests/agc003/tasks/agc003_c
操作2无法改变位置的奇偶性
我们直接对所有数字离散化以后,对于奇数位的数字看有多少是偶数就是答案,也等于偶数位有多少数字是奇数
操作1就可以吧一个数字从奇数位挪动到偶数位,然后操作2又可以吧他们挪到正确的位置
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxl=3e5+10;
int n,alen,blen,cnt,tot,cas,ans;
int a[maxl],b[maxl],num[maxl];
bool vis[maxl];
char s[maxl];
inline void prework()
{
scanf("%d",&n);
alen=blen=0;
for(int i=1;i<=n;i++)
{
int x;scanf("%d",&x);
if(i&1)
a[++alen]=x;
else
b[++blen]=x;
num[i]=x;
}
sort(num+1,num+1+n);
tot=unique(num+1,num+1+n)-num-1;
for(int i=1;i<=alen;i++)
{
a[i]=lower_bound(num+1,num+1+tot,a[i])-num;
if(a[i]%2==0) ans++;
}/*
for(int i=1;i<=blen;i++)
b[i]=lower_bound(num+1,num+1+tot)-num;*/
}
inline void mainwork()
{
}
inline void print()
{
printf("%d",ans);
}
int main()
{
int t=1;
//scanf("%d",&t);
for(cas=1;cas<=t;cas++)
{
prework();
mainwork();
print();
}
return 0;
}