Question: Find spans in an array. Given an array arr[], the SPAN s[i] of arr[i] is the maximum number of consecutive elements arr[j] immediately before arr[i] such that arr[j] <= arr[i].
Let us try to understand the question once again. This is a very common problem in stock markets to find the peaks. Spans have applications to financial analysis(Example:- You might have heard a saying “STOCKS AT 52 WEEK HIGH”). The span of a stocks price on certain day, i , is the maximum number of consecutive days (up-to the current day) the price of the stock has been less than or equal to its price on i. As an example let us consider the following diagram:-
| Day : Index i | Input Array arr[i] | S[i] : Span of arr[i] |
| 0 | 6 | 1 |
| 1 | 3 | 1 |
| 2 | 4 | 2 |
| 3 | 5 | 3 |
| 4 | 2 | 1 |
Now let us try to find an algorithm to find the spans.
The simplest method would be to find the contiguous days with less stock price for each day.
#include<stdio.h>
int main(void)
{
int arr[10];
/*
input an array of integers
*/
int i,j;
for(i=0;i<10;i++)
scanf("%d",&arr[i]);
//to store the spans
int new_arr[10];
for(i=0;i<10;i++)
{
j = i-1;
int count = 0;
//counting the contagious smaller elements
while(arr[j] <= arr[i] && j>=0)
{
count++;
j--;
}
new_arr[i] = count;
}
printf("The spans are:- ");
for(i=0;i<10;i++)
printf("%d ",new_arr[i]);
return 0;
}

