程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> HOJ_2430 Counting the algorithms

HOJ_2430 Counting the algorithms

編輯:C++入門知識

[cpp]   #include <stdio.h>   #include <cstring>   const int maxn=2*100001;   int c[maxn],a[maxn];   bool judge[100001];   int f[100001];   inline int lowbit(int x)   {       return x&(-x);   }   void update(int x,int p)   {       for(int i=x; i<maxn; i+=lowbit(i))           c[i]+=p;   }   int sum(int x)   {       int ans=0;       for(int i=x; i>0; i-=lowbit(i))           ans+=c[i];       return ans;   }   int main()   {       int n;       while(scanf("%d",&n)==1)       {           memset(c,0,sizeof(c));           memset(judge,false,sizeof(judge));           memset(f,0,sizeof(f));           for(int i=1; i<=2*n; i++)           {               scanf("%d",&a[i]);               update(i,1);               if(!judge[a[i]]) judge[a[i]]=true;               else f[a[i]]=i;           }           int ans=0;           for(int i=1;i<=2*n;i++)           {               ans+=sum(f[a[i]])-sum(i);                           update(f[a[i]],-1);           }           printf("%d\n",ans);       }       return 0;   }    

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved