一道略水的题,用树状数组求逆序数,放在这里当作模板,方便以后重用。
当时把树状数组的记录求和的数组开小了,一直WA,太粗心。
#include#include #include #define MAX_LEN 160#define MAX_DNA 110#define MAX_RECRD 200struct node{ int val; char str[MAX_LEN];}dna[MAX_DNA];int getValue(char *,int),get_sum(int),cmp(const void *,const void *),recrd[MAX_RECRD];void update(int,int,int);inline int lowbit(int);int main(){ int n,m; while(scanf("%d%d",&n,&m)!=EOF) { getchar(); int i; for(i=0;i 0;i-=lowbit(i)) { tmp+=recrd[i]; } return tmp;}inline int lowbit(int x){ return x&(-x);}int cmp(const void *x,const void *y){ return (*(struct node *)x).val-(*(struct node *)y).val;}