AT5224 [ABC142C] Go to School 题解

题意简述


给定一个整数 nn,表示有 nn 个人要进教室。

每个人进教室时都会看到教室里的人数,题目给定 nn 个整数 xix_i,表示第 ii 个人进教室时会看到 xix_i 个人。

解题思路


结构体排序题。

我们按照看到的人数 numnum 排序,于是就有如下 cmpcmp 函数。

bool cmp(node x,node y) {
	return x.num<y.num;
}

我们在输入时再用结构体保存它的 idid,最后按照 numnum 从小到大的顺序输出 idid 即可。

代码实现


#include<bits/stdc++.h>
using namespace std;
int n;
struct node {
	int num,id;
}a[1000005];
bool cmp(node x,node y) {
	return x.num<y.num;
}
int main() {
	scanf("%d",&n);
	for(int i=1;i<=n;i++) {
		scanf("%d",&a[i].num);
		a[i].id=i;
	}
	sort(a+1,a+n+1,cmp);
	for(int i=1;i<=n;i++) printf("%d ",a[i].id);
	return 0;
}
//code by TheCedar