Untitled

 avatar
unknown
c_cpp
3 years ago
1.0 kB
4
Indexable
#include <iostream>

int main()
{
	int const N = 22;
	int a[N] = { 2,3,4,8,5,4,3,2,1,2,3,3,3,3,4,5,6,7,8,9,1,2 };
	int i = 0;
	int j = 0;
	int dlugosc_podtablicy = 1; //jak ktoś będzie wredny, to ci da ciąg pusty - na kolokwium może być istotne
	int indeks = 0;
	int indeks_max = 0;
	int dlugosc_podtablicy_max = 1;

	for (i = 0; i < (N-1); i++) //jeśli chodzi o samo C/C++ to "i++" jest dużo droższą operacją niż "++i", "++i" jest lepsze w takiej sytuacji
	{
		if (a[i] <= a[i + 1])
		{
			indeks = i;

			while (i + j < (N - 1) && a[i + j] <= a[i + j + 1])
			{
				dlugosc_podtablicy++;
				j++;
			}

			if (dlugosc_podtablicy_max < dlugosc_podtablicy)
			{
				dlugosc_podtablicy_max = dlugosc_podtablicy;
				indeks_max = indeks;
			}
			//najlepszym rozwiązaniem tutaj byłoby zrobić	i+=j+1
			//												j=0, żeby nie liczyć niepotrzebnie już policzonych podciągów
		}
	}

	std::cout << indeks_max << " " << dlugosc_podtablicy_max << std::endl;

	return 0;
}
Editor is loading...