Moze li neko da me navede kako da uprostim vremensku slozenost ovog koda. Ako sam dobro razumeo zadatak, moze do K karata da se izbaci, samim tim za svaku iteraciju ce se povecavati broj vrednosti koje treba da uporedim kako bih dobio maksimalnu. Ipak, feedback je TLE.
#include <iostream>
#include <string>
using namespace std;
int main() {
int N, K;
int *arr;
int max;
cin >> N;
arr = new int[N];
if (N < 2 || N > 500000) {
fprintf(stderr, "Los input\n");
exit(EXIT_FAILURE);
}
cin >> K;
if (K < 0 || K > N - 2) {
fprintf(stderr, "Los input\n");
exit(EXIT_FAILURE);
}
for (int i = 0; i < N; i++) {
cin >> arr[i];
if (arr[i] < -1000000 || arr[i] > 1000000) {
fprintf(stderr, "Los input\n");
exit(EXIT_FAILURE);
}
}
max = arr[N-1] - arr[0];
for (int i = 1; i <= K; i++) {
for (int j = 0; j <= i; j++) {
if (max < arr[j+N-1-i] - arr[j])
max = arr[j + N - 1 - i] - arr[j];
cout << (arr[j + N - 1 - i] - arr[j]) << endl;
}
}
cout << max << endl;
delete [] arr;
return 0;
}