題目鏈接: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;
}