RQNOJ 考分鄙视

http://www.rqnoj.cn/Problem_509.html
这道题目挺水的,如果考试i鄙视考试j,那么Ai-Aj>i-j…就是Ai-i>Aj-j..所以把A’i=Ai-i。。就是A’i的逆序对数量了。。。。直接用树状数组。。
Code:
#include<cstdio>#include<iostream>#define rep(i,n) for(int i=0;i<n;i++)using namespace std;const int maxn=100000,maxv=20000,maxs=maxn+maxv+10,mod=12345;int C[maxs]={},n;void add(int p,int d){ for(;p<maxs;p+=(p&-p)) C[p]+=d;}int sum(int p){ int ret=0; for(;p;p-=(p&-p))ret+=C[p]; return ret;}void Plus(int&a,int b){ a+=b;if(a>=mod)a-=mod;}int main(){ //freopen("in","r",stdin); scanf("%d",&n);int x,ans=0; rep(i,n) { scanf("%d",&x);x+=maxn-i; Plus(ans,sum(x-1)); add(x,1); } printf("%dn",ans);}

Leave a Reply

Your email address will not be published. Required fields are marked *