问题 B: C语言-链表排序
时间限制: 1 Sec 内存限制: 128 MB
献花: 25 解决: 23
[献花][花圈][TK题库]
题目描述
已有a、b两个链表,每个链表中的结点包括学号、成绩。要求把两个链表合并,按学号升序排列。
输入
第一行,a、b两个链表元素的数量N、M,用空格隔开。 接下来N行是a的数据 然后M行是b的数据 每行数据由学号和成绩两部分组成
输出
按照学号升序排列的数据
样例输入
2 3
5 100
6 89
3 82
4 95
2 10
样例输出
2 10
3 82
4 95
5 100
6 89
#define _CRT_SECURE_NO_WARNINGS
#include <unordered_map>
#include <algorithm>
#include <iostream>
#include <cstring>
#include <string>
#include <vector>
#include <stack>
#include <queue>
#include <map>
using namespace std;
const int MaxN = 1e6;
struct Stu
{
int id;
int s;
}stu[MaxN];
bool cmp(Stu a, Stu b)
{
return a.id < b.id;
}
int main()
{
#ifdef _DEBUG
freopen("data.txt", "r+", stdin);
#endif // _DEBUG
int N, M;
while (EOF != scanf("%d %d", &N, &M))
{
int sum = N + M;
for (int i = 0; i < sum; ++i)
scanf("%d %d", &stu[i].id, &stu[i].s);
sort(stu, stu + sum, cmp);
for (int i = 0; i < sum; ++i)
printf("%d %d\n", stu[i].id, stu[i].s);
}
return 0;
}
/**************************************************************
Problem: 1870
User: Sharwen
Language: C++
Result: 升仙
Time:0 ms
Memory:9520 kb
****************************************************************/