2021-2022-2 ACM集训队每周程序设计竞赛 - 问题 C:回到学校 - 题解
Posted Tisfy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2021-2022-2 ACM集训队每周程序设计竞赛 - 问题 C:回到学校 - 题解相关的知识,希望对你有一定的参考价值。
传送门
回到学校
时间限制:1秒
空间限制:128M
题目描述
愉快的假期总是那么的短暂。
回到学校后,小T监测了教室的进出情况。
假设班级里有 N N N 个同学,学号分别是 1 ∼ N 1\\sim N 1∼N,小T记录了每位同学分别是第几个进入的教室。
你可以通过上述记录,按进入教室的先后顺序输出同学的学号吗?
输入描述
N
A1 A2 ... AN
第一行一个正整数 N N N ,代表同学的个数。
第二行有空格隔开的 N N N 个正整数, A i A_i Ai 代表学号为 i i i 的同学是第几个进入教室的。
数据范围:
- 1 ≤ N ≤ 1 0 5 1\\leq N\\leq 10^5 1≤N≤105
- 1 ≤ A i ≤ N 1\\leq A_i\\leq N 1≤Ai≤N
- A i ≠ A j ( i ≠ j ) A_i \\neq A_j(i\\neq j) Ai=Aj(i=j)
输出描述
输出一行一个正整数,第 i i i 个整数代表第 i i i 个进入教室的同学的学号。
样例一
输入
3
2 3 1
输出
3 1 2
样例二
输入
5
1 2 3 4 5
输出
1 2 3 4 5
样例三
输入
8
8 2 7 3 4 5 6 1
输出
8 2 4 5 6 7 3 1
题目分析
我们只需要把<第几个进入的教室, 这个同学的学号>打包在一起,并按“第几个进入的教室”进行排序,按顺序输出同学的学号即可。
AC代码
#include <bits/stdc++.h>
using namespace std;
#define mem(a) memset(a, 0, sizeof(a))
#define dbg(x) cout << #x << " = " << x << endl
#define fi(i, l, r) for (int i = l; i < r; i++)
#define cd(a) scanf("%d", &a)
typedef long long ll;
typedef pair<int, int> pii;
pii a[100010];
int main()
int n;
cd (n); // scanf("%d", &n);
fi (i, 0, n) // for (int i = 0; i < n; i++)
cd (a[i].first); // scanf
a[i].second = i + 1;
sort(a, a + n);
fi (i, 0, n) // for i: [0, n)
printf("%d ", a[i].second);
return 0;
原创不易,转载请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/123415431
以上是关于2021-2022-2 ACM集训队每周程序设计竞赛 - 问题 C:回到学校 - 题解的主要内容,如果未能解决你的问题,请参考以下文章
2021-2022-2 ACM集训队每周程序设计竞赛(13)题解
2021-2022-2 ACM集训队每周程序设计竞赛(13)题解
2021-2022-2 ACM集训队每周程序设计竞赛(13)题解