您的位置:首页 > 其它

neuoj 1595

2015-06-16 23:15 246 查看
#include<iostream>

#include<fstream>

using namespace std;

typedef long long LL;

const int MOD=1e6+7;

LL fac[110];

int a[110],b[110];

void init()

{

for(int i=0;i<=110;i++)

{

if(i==0) fac[i]=1;

else

{

fac[i]=fac[i-1]*i;

fac[i]=fac[i]%MOD;

}

}

}

int KT(int n,int s[])

{

LL sum=0;

for(int i=0;i<n;i++)

{

LL t=0;

for(int j=i+1;j<n;j++)

if(s[j]<s[i])

t++;

sum+=t*fac[n-i-1];

sum%=MOD;

}

return int(sum);

}

int cmp(int a[],int b[],int n)

{

for(int i=0;i<n;i++)

{

if(a[i]>b[i]) return 1;

else if(a[i]<b[i]) return -1;

}

return 0;

}

int main( )

{

//freopen("in.txt","r",stdin);

init();

int t;

scanf("%d",&t);

for(int ca=1;ca<=t;ca++)

{

int n;

scanf("%d",&n);

for(int i=0;i<n;i++) scanf("%d",&a[i]);

for(int i=0;i<n;i++) scanf("%d",&b[i]);

int aa=KT(n,a);

int bb=KT(n,b);

int cc=cmp(a,b,n);

//cout<<aa<<" "<<bb;

printf("Case $%d:\n",ca);

printf("%d\n",cc>0?(aa+MOD-bb)%MOD:(bb+MOD-aa)%MOD);

}

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: