static int max(int x, int y)
static int min(int x, int y)
static int maxIndexDiff(int []arr, int n)
for (i = 1; i < n; ++i) {
LMin[i] = min(arr[i], LMin[i - 1]);
for (i = 0; i < n; ++i) {
Console.Write(LMin[i]+" ");
RMax[n - 1] = arr[n - 1];
for (j = n - 2; j >= 0; --j) {
RMax[j] = max(arr[j], RMax[j + 1]);
for (i = 0; i < n; ++i) {
Console.Write(RMax[i]+" ");
i = 0; j = 0; maxDiff = -1;
maxDiff = max(maxDiff, j - i);
Console.WriteLine("{0}-{1}-maxdiff:{2}",j,i,maxDiff);
public static void Main()
int []arr = {34, 8, 10, 3, 2, 80, 30, 33, 1};
Array.ForEach(arr,x=>Console.Write(x+" "));
int maxDiff = maxIndexDiff(arr, n);