File tree 1 file changed +42
-0
lines changed
1 file changed +42
-0
lines changed Original file line number Diff line number Diff line change
1
+ #include < iostream>
2
+ using namespace std ;
3
+
4
+ void calculate_span (int * inputArrayPtr, int inputArraySize, int * outputArrayPtr) {
5
+ outputArrayPtr[0 ] = 1 ;
6
+ int i, counter;
7
+ for (i = 1 ; i < inputArraySize; i++) {
8
+ counter = 1 ;
9
+ while ((i - counter) >= 0 && inputArrayPtr[i] >= inputArrayPtr[i - counter])
10
+ counter += outputArrayPtr[i - counter];
11
+ outputArrayPtr[i] = counter;
12
+ }
13
+ }
14
+
15
+ void get_input (int ** inputPtr, int * inputSize) {
16
+ cout << " What is the size of the input array? " ;
17
+ cin >> *inputSize;
18
+ *inputPtr = (int *) malloc (*inputSize);
19
+ int i;
20
+ for (i = 0 ; i < *inputSize; i++) {
21
+ cout << " Index " << i << " value: " ;
22
+ cin >> (*inputPtr)[i];
23
+ }
24
+ }
25
+
26
+ void print_output (int * outputPtr, int outputSize) {
27
+ int i;
28
+ cout << " [" ;
29
+ for (i = 0 ; i < outputSize - 1 ; i++)
30
+ cout << outputPtr[i] << " ," ;
31
+ cout << outputPtr[outputSize - 1 ] << " ]" << endl;
32
+ }
33
+
34
+ int main () {
35
+ int * inputPtr;
36
+ int inputSize;
37
+ int * outputPtr;
38
+ get_input (&inputPtr, &inputSize);
39
+ calculate_span (inputPtr, inputSize, outputPtr);
40
+ print_output (outputPtr, inputSize);
41
+ }
42
+
You can’t perform that action at this time.
0 commit comments