码迷,mamicode.com
首页 > 其他好文 > 详细

Ultra-QuickSort

时间:2015-04-01 19:53:53      阅读:131      评论:0      收藏:0      [点我收藏+]

标签:

Ultra-QuickSort

Ultra-QuickSort

poj: 2299 http://poj.org/problem?id=2299

long long sum

写成

int sum

结果错误,再哭一次…

#include <cstdio>
#include <cstring>
#include <iostream>

using namespace std;

const int maxn = 500005;
int a[maxn];
int aux[maxn];
int n;
long long sum;

void merge(int l, int mid, int r) {
    int i = l;
    int j = mid+1;
    int end1 = mid;
    int end2 = r;

    for (int t = l; t <= r; t++) {
        aux[t] = a[t];
    }

    for (int t = l; t <= r; t++) {
        if (i > end1) {
            a[t] = aux[j++];
        } else if (j > end2) {
            a[t] = aux[i++];
        } else if (aux[i] <= aux[j]) {
            a[t] = aux[i++];
        } else {
            sum += end1-i+1;
            a[t] = aux[j++];
        }
    }
}

void msort(int l, int r) {
    if (l < r) {
        int mid = (l + r) / 2;
        msort(l, mid);
        msort(mid+1, r);
        merge(l, mid, r);
    }
}

int main(void) {
    int n;
    while (scanf("%d", &n) && n != 0) {
        for (int i = 0; i < n; i++) {
            scanf("%d", &a[i]);
        }
        sum = 0;
        msort(0, n-1);
        cout << sum << endl;
    }

    return 0;
}

Ultra-QuickSort

标签:

原文地址:http://www.cnblogs.com/sunznx/p/4384664.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!