public class Absteigendes_Teilstueck {


	/**
	 * @param args
	 */
	public static void main(String[] args) {
		int max_length = 0, current_length = 1, max_start = 0, current_start = 0;
		int n = 8;
		int array[] = {9, 1, 4, 7, 4, 2, 0, 3};
		int[] subarray = new int[n];

		
		// Schleifenkosten: O(n)
		for(int i = 0; i < n-1; i++) {
			if(array[i+1] < array[i]) {
				current_length++;
				if(current_length > max_length) {
					max_start = current_start;
					max_length = current_length;
				}
			} else {
				current_length = 1;
				current_start = i+1;
			}
		}

		/* Hier wissen wir bereits Start und Länge des längsten absteigenden Teilstücks,
		 * müssen es also nur noch aus dem Array extrahieren.
		 */
		
		// Schleifenkosten: O(max_length) < O(n)
		for(int i = max_start; i < max_start + max_length; i++) {
			subarray[i] = array[i];
			// Output
			System.out.println(subarray[i]);
		}
		
		// Gesamtkosten: O(n) :)
	}