您的位置:首页 > 产品设计 > UI/UE

poj2299:Ultra-QuickSort

2015-09-30 16:46 549 查看
求逆序对即可,然而发现还是bit容易写。。
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Ultra-QuickSort

Time Limit: 7000MSMemory Limit: 65536K
Total Submissions: 49549Accepted: 18142
Description

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
#define ll long long
#define rep(i,n) for(int i=1;i<=n;i++)
struct data{
ll w;int c;
bool operator<(const data&rhs)const {
return w<rhs.w;}
}e[500005];
int t[500005],n;
int lowbit(int x){return x&-x;}
void insert(int x){
for(int i=x;i<=n;i+=lowbit(i))
t[i]++;
}
int find(int x){
int tmp=0;
for(int i=x;i;i-=lowbit(i))
tmp+=t[i];
return tmp;
}
int main(){
while(scanf("%d",&n)&&n){
memset(t,0,sizeof(t));
rep(i,n){
scanf("%lld",&e[i].w);
e[i].c=i;
}
sort(e+1,e+n+1);
ll ans=0;
rep(i,n){
insert(e[i].c);
ans+=i-find(e[i].c);
}
printf("%lld\n",ans);
}
return 0;
}


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