记录编号 | 438812 | 评测结果 | AAAAAAAAAA | ||
---|---|---|---|---|---|
题目名称 | [NOIP 2013]火柴排队 | 最终得分 | 100 | ||
用户昵称 | 是否通过 | 通过 | |||
代码语言 | C++ | 运行时间 | 0.084 s | ||
提交时间 | 2017-08-17 18:19:43 | 内存使用 | 2.99 MiB | ||
#include<bits/stdc++.h> using namespace std; int n,q[100005],f[100005],g[100005]; const int mod=99999997; struct ghb{ int seat,val; bool operator < (const ghb &o)const{ return val<o.val; } }a[100005],b[100005]; int lowbit(int x){ return x&(-x); } void change(int x){ for(int i=x;i<=n;i+=lowbit(i)){ g[i]++; } } int sum(int x){ int ans=0; for(int i=x;i>0;i-=lowbit(i)){ ans+=g[i]; } return ans; } int main() { freopen("MatchNOIP2013.in","r",stdin); freopen("MatchNOIP2013.out","w",stdout); // freopen("1.txt","r",stdin); scanf("%d",&n); for(int i=1;i<=n;i++){ scanf("%d",&a[i].val); a[i].seat=i; } sort(a+1,a+n+1); for(int i=1;i<=n;i++){ q[i]=a[i].seat; } for(int i=1;i<=n;i++){ scanf("%d",&b[i].val); b[i].seat=i; } sort(b+1,b+n+1); for(int i=1;i<=n;i++){ f[b[i].seat]=q[i]; } int ans=0; for(int i=1;i<=n;i++){ change(f[i]); ans+=sum(n)-sum(f[i]); ans%=mod; } cout<<ans; return 0; }