TouchStone
  请登录后使用
登录 注册
 系统首页  练习题库  考试列表  判题结果  问题讨论与解答  统计信息与排名
  • 首页
  • 题库
  • P2180
  • 题目
  • P2180交换排序
    限制 : 时间限制 : 10000 MS   空间限制 : 65536 KB
    问题描述

    给出一个长度为n的整数数列,你每一次可以随意交换其中任意相邻两个数字的位置。问你至少交换几次,才能使得这个数列是个单调递增数列。
    例如有数列:9 1 0 5 4
    结果极限排序后:0 1 4 5 9

    输入格式

    有多组输入数据,对于每组输入数据:
    第一行,一个整数 n(n < 500,000)表示待排序的数列长度。
    接下来n行,第i行表示数列中的第i个整数a[i](0 ≤ a[i] ≤ 999,999,999)
    当n=0时,表示输入结束。

    输出格式

    对于每组输入数据,输出一个整数,表示最少交换的次数

    样例输入

    5
    9
    1
    0
    5
    4
    3
    1
    2
    3
    0

    样例输出

    6
    0

    提示

    共两组输入数据,分别是:
    5
    9
    1
    0
    5
    4

    3
    1
    2
    3

    注意,结果可能超过int的范围,建议用long long 类型
    long long的定义方式为:long long x;
    long long 的输出有两种方式:
    c++方式:cout<<x;
    c语言方式:printf("%lld",x);
    scanf("%lld",&x);


    来源  Waterloo local 2005.02.05