Assignments | Course Home | Documentation | Lab Hours/Tutoring | Schedule | Submit

Saint Louis University

Computer Science 180
Data Structures

Michael Goldwasser

Spring 2014

Dept. of Math & Computer Science


Lab Assignment 06

Topic: Mad Scientist
Source Code: mad.cpp
Live Archive Ref#: 4920

Pre-lab Due:

Tuesday, 4 March 2014, 10:00am
Submission Deadline: Wednesday, 5 March 2014, 11:59pm

Techniques:

Vectors, Various

Collaboration Policy

The pre-lab requirement must be completed and submitted individually.

The remainder of the lab activity should be completed working in pairs. One person should submit the result, making sure that both partners' names are clearly identified in that submission.

Please make sure you adhere to the policies on academic integrity in this regard.


Pre-Lab Requirement

Read the complete problem description and then determine what the expected output should be if given the following input:

Prelab input: Prelab output:
4 1 2 3 5
4 0 3 3 6
0


Mad Scientist

A mad scientist performed a series of experiments, each having n phases. During each phase, a measurement was taken, resulting in a positive integer of magnitude at most k. The scientist knew that an individual experiment was designed in a way such that its measurements were monotonically increasing, that is, each measurement would be at least as big as all that precede it. For example, here is a sequence of measurements for one such experiment with n=13 and k=6:

1, 1, 2, 2, 2, 2, 2, 4, 5, 5, 5, 5, 6

It was also the case that n was to be larger than k, and so there were typically many repeated values in the measurement sequence. Being mad, the scientist chose a somewhat unusual way to record the data. Rather than record each of n measurements, the scientist recorded a sequence P of k values defined as follows. For 1 ≤ j ≤ k, P(j) denoted the number of phases having a measurement of j or less. For example, the original measurements from the above experiment were recorded as the P-sequence:

2, 7, 7, 8, 12, 13
as there were two measurements less than or equal to 1, seven measurements less than or equal to 2, seven measurement less than or equal to 3, and so on.

Unfortunately, the scientist eventually went insane, leaving behind a notebook of these P-sequences for a series of experiments. Your job is to write a program that recovers the original measurements for the experiments.

Input: The input contains a series of P-sequences, one per line. Each line starts with the integer k, which is the length of the P-sequence. Following that are the k values of the P-sequence. The end of the input will be designated with a line containing the number 0. All of the original experiments were designed with 1 ≤ k < n ≤ 26.

Output: For each P-sequence, you are to output one line containing the original experiment measurements separated by spaces.

Example Input: Example Output:
6 2 7 7 8 12 13
1 4
3 4 4 5
3 0 4 5
5 2 2 4 7 7
0
1 1 2 2 2 2 2 4 5 5 5 5 6
1 1 1 1
1 1 1 1 3
2 2 2 2 3
1 1 3 3 4 4 4

Warning

By contest rules, there must NOT be any trailing space at the end of each output line. The easiest way to assure this when printing results stored in a sequence is to print the first output value, and then use a loop to repeatedly output a leading space and next value. (In this way, the last thing printed is a value, not a space.)


Judge's Data

You can run the automated judge's tests on turing to test the correctness of your program (although you must still formally submit the source code via the course website). If you are working on your own machine (or if you just want to examine the judge's inputs and expected outputs), we provide them here.


Michael Goldwasser
CSCI 180, Spring 2014
Last modified: Sunday, 02 March 2014
Assignments | Course Home | Documentation | Lab Hours/Tutoring | Schedule | Submit