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 1N小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 1N105
  • 1 ≤ A i ≤ N 1\\leq A_i\\leq N 1AiN
  • 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集训队每周程序设计竞赛题解

2021-2022-2 ACM集训队每周程序设计竞赛(13)题解

2021-2022-2 ACM集训队每周程序设计竞赛(13)题解

2021-2022-2 ACM集训队每周程序设计竞赛(13)题解

2021-2022-2 ACM集训队每周程序设计竞赛 - 问题 C:回到学校 - 题解

2021-2022-2 ACM集训队每周程序设计竞赛(10) - 问题 C: 下一个素数 - 题解