万卷网 > 题目详情
题型:编程题

排序

时间限制:1 s,内存限制:512 MB

【问题描述】

体育课上有 n 名同学排成一队,从前往后数第 i 位同学的身高为 hi,体重为 wi。

目前排成的队伍看起来参差不齐,老师希望同学们能按照身高从高到低的顺序排队,如果身高相同则按照体重从重到轻排序。

在调整队伍时,每次只能交换相邻两位同学的位置。老师想知道,最少需要多少次交换操作,才能将队伍调整成目标顺序。

【输入描述】

第一行,一个正整数 n,表示队伍人数。

接下来 n 行,每行两个正整数 hi 和 wi,分别表示第 i 位同学的身高和体重。

【输出描述】

输出一行,一个整数,表示最少需要的交换次数。

【样例输入1】

5
1 60
3 70
2 80
4 55
4 50

【样例输出1】

8

【样例输入2】

5
4 0
4 0
2 0
3 0
1 0

【样例输出2】

1

【数据范围】

对于所有测试点,保证 1 <= n <= 3000,0 <= hi、wi<= 10^9。

更新时间:2026-03-31 18:28:37 |
【知识点】 CCF—GESP C++四级

相似题推荐

判断题

下面程序执行后输出 2010 。

int x = 10; 
void f() { int x = 20; cout << x; } 

int main() { 
    f(); 
    cout << x; 
}
A.正确 B.错误
2026-09-29
判断题

下面程序可以正常编译并输出 10 。

int calc(int x, int y = 10); 
int calc(int x) { return x * 2; } 
int calc(int x, int y) { return x * y; } 

int main() { 
    cout << calc(5); 
}
A.正确 B.错误
2026-09-29
判断题

下面程序能够把 Hello 写入 data.txt 文件中。

ofstream fout("data.txt"); 
cout << "Hello"; 
fout.close();
A.正确 B.错误
2026-09-29
单选题

执行 climb(6) 的返回值为( )。

int climb(int n){ 
    if(n <= 2) return n; 
    int a = 1, b = 2, c = 0; 
    for(int i = 3; i <= n; i++){ 
        c = a + b; 
        a = b; 
        b = c; 
    } 
    return c; 
    }
A.

8

B.

13

C.

5

D.

10

2026-09-29
单选题

已知:

int a[3][4] = { 
    {1,2,3,4}, 
    {5,6,7,8}, 
    {9,10,11,12} 
}; 
int (*p)[4] = a;

则表达式 *(*(p + 2) + 1) 的值为( )。

A.

6

B.

10

C.

9

D.

11

2026-09-29
公众号
客服 反馈
顶部