【问题描述】
他有一个有 n 块食物,大小均在 1 到 n 之间,且各不相同,食物每天提供一块。有一 个吃货,特殊的进餐习惯,他会每天吃一块食物,他会先吃大的。比如第一天就会吃大小为 n,第二天吃大小 n-1,第三天吃大小为 n-2……。如果某一天食物的大小不对的话,他会 将食物暂时囤积起来,一直等着这个食物出现,然后将之前的食物按从大到小的顺序一口气 吃掉。
【输入数据】
第一行,一个整数 n (1≤n≤100000) ,表示食物的数量。 第二行,n 个整数,依次表示每天的食物的大小。
【输出数据】
输出共 n 行,每行若干个数,第一个数表示当前是第几天,接下来若干是,依次表示 当天吃掉的食物的大小,若当天没有吃,则不输出。
【输入样例 1】
3 3 1 2
【输出样例 1】
1 3 2 3 2 1
【样例解释】
第一天吃最大的 3;第二天等待,不吃;第三天吃 2 和 1。
【输入样例 2】
5 4 5 1 2 3
【输出样例 2】
1 2 5 4 3 4 5 3 2 1
【样例解释】
第一天等待,不吃;第二天吃 5 和 4;第三天等待,不,;第四题等待,不吃;第五天吃 3、 2、1。
模拟大水题,废话不说直接放代码
1 #include<cstdio> 2 int a[100005],b[100005],flag,n; 3 int main(){ 4 freopen("eat.in","r",stdin); 5 freopen("eat.out","w",stdout); 6 scanf("%d",&n); 7 for(int i=1;i<=n;i++)scanf("%d",&a[i]); 8 flag=n; 9 for(int i=1;i<=n;i++){ 10 printf("%d ",i); 11 b[a[i]]=1; 12 while(b[flag])printf("%d ",flag),flag--; 13 printf(" "); 14 } 15 }