Disk tower

 Problem:-

Your task is to construct a tower in 

N

 days by following these conditions:

  • Every day you are provided with one disk of distinct size.
  • The disk with larger sizes should be placed at the bottom of the tower.
  • The disk with smaller sizes should be placed at the top of the tower.

The order in which tower must be constructed is as follows:

  • You cannot put a new disk on the top of the tower until all the larger disks that are given to you get placed.

Print 

N

 lines denoting the disk sizes that can be put on the tower on the 

ith

 day.

Input format

  • First line: 
    N

     denoting the total number of disks that are given to you in the 

    N

     subsequent days

  • Second line: 
    N

     integers in which the 

    ith

     integers denote the size of the disks that are given to you on the 

    ith

     day

Note: All the disk sizes are distinct integers in the range of  

1 to N

.

Output format

Print 

N

 lines. In the 

ith

 line, print the size of disks that can be placed on the top of the tower in descending order of the disk sizes.

If on the 

ith

 day no disks can be placed, then leave that line empty.

Constraints

1N106

1size of a diskN

Sample Input
5
4 5 1 2 3
Sample Output
 
5 4


3 2 1
Time Limit: 1
Memory Limit: 256
Source Limit:
Explanation

On the first day, the disk of size is given. But you cannot put the disk on the bottom of the tower as a disk of size 5 is still remaining.

On the second day, the disk of size 5 will be given so now disk of sizes 5 and 4 can be placed on the tower. 

On the third and fourth day, disks cannot be placed on the tower as the disk of needs to be given yet. Therefore, these lines are empty. 

On the fifth day, all the disks of sizes 32, and 1 can be placed on the top of the tower.

Solution:-

#include<stdio.h>
int main()
{
long int n,a[1000000]={0},ind,i,max;
scanf(“%ld”,&n);
max=n;
for(i=0;i<n;i++)
{
scanf(“%ld”,&ind);
a[ind]=ind;
if(ind==max)
{
while(a[ind]!=0)
{
printf(“%ld “,a[ind]);
ind–;
}
max=ind;
printf(“n”);
}
else
printf(“n”);
}
return 0;
}



Leave a Reply

Your email address will not be published.