Escape Room

題目鏈接:Escape Room


首先對於所有長度爲1的,我們只能按照數字從大到小放。

然後放完之後,又使得所有長度大於1的減小1。

所以其實我們就是先放長度爲1的,然後長度爲2.。。。


AC代碼:

#pragma GCC optimize("-Ofast","-funroll-all-loops")
#include<bits/stdc++.h>
//#define int long long
using namespace std;
const int N=1e5+10;
int res[N],n;	vector<int> v[N];	
signed main(){
	cin>>n;	int tmp=n;
	for(int i=1,x;i<=n;i++)	scanf("%d",&x),v[x].push_back(i);
	for(int i=1;i<=n;i++)	for(int j:v[i])	res[j]=tmp--;
	for(int i=1;i<=n;i++)	printf("%d ",res[i]);
	return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章