关于C题
  • 板块学术版
  • 楼主7KByte
  • 当前回复7
  • 已保存回复7
  • 发布时间2020/7/25 18:04
  • 上次更新2023/11/6 22:18:15
查看原帖
关于C题
119261
7KByte楼主2020/7/25 18:04

数据可能有点假。

下面这个随便Hack的程序过了

#include<bits/stdc++.h>
#define rep(i,a,b) for(register int i=a;i<=b;i++)
#define pre(i,a,b) for(register int i=a;i>=b;i--)
#define N 1000005
#define E puts("dldsgay!!1")
using namespace std;
typedef long long ll;
int n,a[2][N],u[N<<1];bool v[N<<1];
int c[N],f[N];
inline void add(int x){
	for(;x<=n;x+=x&-x)c[x]++;
}
inline int ask(int x){
	register int sum=0;
	for(;x;x-=x&-x)sum+=c[x];
	return sum;
}
char buf[1<<21],*p1=buf,*p2=buf,obuf[1<<21],*O=obuf;
#define getchar() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++)
inline int read(){
    int x=0;char ch=getchar();
    while(!isdigit(ch))ch=getchar();
    while(isdigit(ch))x=(x<<1)+(x<<3)+(ch^48),ch=getchar();
    return x;
}
int main(){
	n=read();
	rep(op,0,1)rep(i,1,n)a[op][i]=read();
	register int x,y;
	rep(op,0,1)rep(i,1,n)
		x=read(),u[x]=i,v[x]=op;
	rep(op,0,1)rep(i,1,n){
		x=v[a[op][i]],y=u[a[op][i]];
		if(op^x&&((i&1)==(y&1))){E;return 0;}
		if(op==x&&((i&1)!=(y&1))){E;return 0;}
		if(op==0)f[i]=y;
	}
	register ll ans=0;
	rep(i,1,n)ans+=ask(n)-ask(f[i]),add(f[i]);
	printf("%lld\n",ans);
	return 0;
}
2020/7/25 18:04
加载中...