思路:
在每一天判断当前掉落的蛋糕是否是现在需要摆放的蛋糕。
如果是,那么把储存的蛋糕从后往前逐个枚举,看是否可以继续放。
否则将这个蛋糕存着。
完整代码:
#include<bits/stdc++.h>
using namespace std;
int main(){
bool a[100005];//a[i] 为 1 ,则代表重量为 i 的大小的蛋糕已经出现,否则没有
int n,x;//n 为总天数, x 是当前掉落蛋糕的大小
cin>>n;
int now=n;//now 为当前需要放的蛋糕的大小(初始化为 n )
memset(a,0,sizeof(a));//a 数组初始化为 0
for(int i=1;i<=n;i++){
cin>>x;
a[x]=1;//标记当前大小的蛋糕已经出现
if(x==now){//当前蛋糕需要摆放
cout<<now<<" ";//输出当前蛋糕的大小
now--;//需要的蛋糕的大小 -1
while(a[now]==1){//当现在存储的蛋糕还可以继续摆放时
cout<<now<<" ";//输出当前蛋糕的大小
now--;//需要的蛋糕的大小 -1
}
}
cout<<endl;//注意换行
}
return 0;//完美结束
}