Exemplo n.º 1
0
void mer(int l,int r)
{
    if(l==r) return ;
    int mid=(l+r)/2 ;
    mer(l,mid) ; mer(mid+1,r) ;
    for(int i=l,j=mid+1,cnt=l;i<=mid||j<=r;)
        if(j==r+1 || (i!=mid+1 && fac[i]<=fac[j])) t[cnt++]=fac[i++] ;
        else t[cnt++]=fac[j++] ;
    for(int i=l;i<=r;i++) fac[i]=t[i] ;
}
Exemplo n.º 2
0
void mer(int l,int r)
{
    if(l==r) return ;
    int mid=(l+r)/2 ;
    mer(l,mid) ; mer(mid+1,r) ;
    int cnt1=l,cnt2=mid+1 ;
    for(int cnt=1;cnt<=r-l+1;cnt++)
    {
        if(cnt2==r+1 || (cnt1<=mid && a[cnt1]<=a[cnt2]))
            {b[cnt]=a[cnt1] ; cnt1++ ; }
        else if(cnt1==mid+1 || (cnt2<=r && a[cnt2]<=a[cnt1]))
            {b[cnt]=a[cnt2] ; cnt2++ ; }
    }
    for(int i=1;i<=r-l+1;i++) a[l-1+i]=b[i] ;
}
	    void sort(int l,int h)
		   {
			 int mid;
			 if(l<h)
			   {
				 mid=(l+h)/2;
				 sort(l,mid);
				 sort(mid+1,h);
				 mer(l,mid,h);
			   }
		    }
Exemplo n.º 4
0
main()
{
    int n;
    while(scanf("%d",&n)!=EOF)
    {
        for(int i=1;i<=n;i++) scanf("%d",&a[i]) ;
        mer(1,n) ;
        for(int i=1;i<=n;i++) printf("%d ",a[i]) ;
        printf("\n") ;
    }
}
Exemplo n.º 5
0
void mer(int l,int r)
{
    if(l==r) return ;
    int mid=(l+r)/2 ;
    mer(l,mid) ; mer(mid+1,r) ;
    int cnt=l ,i=l , j=mid+1;
    while(i!=mid+1 || j!=r+1)
    {
        if((i==mid+1) || (j!=r+1 && a[j]<a[i]))
        {
            b[cnt]=a[j] ; ans[a[j]]+=mid+1-i ;
            j++ ;
        }
        else
        {
            b[cnt]=a[i] ; ans[a[i]]+=j-mid-1 ;
            i++ ;
        }
        cnt++ ;
    }
    for(int i=l;i<=r;i++) a[i]=b[i] ;
}
Exemplo n.º 6
0
main()
{
    int n,m ;
    while(scanf("%d %d",&n,&m)!=EOF)
    {
        for(int i=1;i<=n;i++) scanf("%d",&a[i]);
        memset(ans,0,sizeof(ans)) ;
        mer(1,n) ;
        int sum=0 ;
        for(int i=1;i<=n;i++) sum+=ans[i] , printf("%d,",ans[i]) ;
            printf("\n");
        while(m--)
        {
            int x;
            scanf("%d",&x) ;
            printf("%d\n",sum/2) ; sum-=2*ans[x] ;
        }
    }
}
Exemplo n.º 7
0
main()
{
    int T ; scanf("%d",&T) ;
    while(T--)
    {
        LL x ; scanf("%lld",&x) ;
        cnt=0 ;
        printf("%lld = ",x) ;
        solve(x) ;
        mer(0,cnt-1) ;
        for(int i=0;i<cnt;)
        {
            int j=i ;
            for(;j<cnt && fac[j]==fac[i];j++) ;
            printf("%lld",fac[i]) ;
            if(j>i+1) printf("^%d",j-i) ;
            if(j!=cnt) printf(" * ") ;
            i=j ;
        }
        printf("\n") ;
    }
}
Exemplo n.º 8
0
int main(int argc, const char * argv[]) {
    // insert code here...
    std::vector<int> array={4,-1,2,7,10,6};
    std::vector<std::thread> threads;
    Bubble bub(array);
    Selection sel(array);
    Merge mer(array);
    Quick qui(array);
    //Define threads
//    threads.push_back(std::thread(&Bubble::sorting,&bub));
//    usleep(100);
//    threads.push_back(std::thread(&Selection::sorting,&sel));
//    usleep(100);
//    threads.push_back(std::thread(&Merge::sorting,&mer));
//    usleep(100);
//    threads.push_back(std::thread(&Quick::sorting,&qui));
//    usleep(100);
    
    std::thread t_bub (std::bind(&Bubble::sorting, &bub));
    usleep(100);
    std::thread t_sel (std::bind(&Selection::sorting, &sel));
    usleep(100);
    std::thread t_mer (std::bind(&Merge::sorting, &mer));
    usleep(100);
    std::thread t_qui (std::bind(&Quick::sorting, &qui));
    usleep(100);
    
//    threads.push_back(t_bub);
//    threads.push_back(t_sel);
//    threads.push_back(t_mer);
//    threads.push_back(t_qui);
//    for(auto &t: threads) t.join();
    t_bub.join();
    t_sel.join();
    t_mer.join();
    t_qui.join();
    return 0;
}