吃货

【问题描述】

  他有一个有 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("\n");
14     }
15 }

猜你喜欢

转载自www.cnblogs.com/wangshengjun/p/767A.html
今日推荐