P.S: Nu vreau handling de erori (gen k>n). Se presupune ca stim ce numere sa introducem.
EX:
n = 6;
k = 3;
citim: v[0] = 1; v[1] = 4; v[2] = 2; v[3] = 4; v[4] = 6; v[5] = 7; // Deja avem un subsir de 3, insa maximul atins este de 4. => Afisam subsirul de 4
Eu folosesc Visual Studio 2015, insa il puteti scrie si in alt compilator C++ incluzand cin si/sau cout. Voi stii sa le 'traduc' ! Multumesc !:)
Code: Select all
int main()
{
int i, n, k, p = 0, contor = 0, contor_aux = 0, v[100], aux[100];
printf("Introdu un numar: ");
scanf_s("%d", &n);
printf("Introdu lungimea subsirului: ");
scanf_s("%d", &k);
for (i = 0; i < n; i++) {
printf("v[%d] = ", i);
scanf_s("%d", &v[i]);
}
for (i = 0; i < n-1; i++) {
if (v[i] < v[i + 1]) {
aux[p] = v[i];
p++;
} else if (v[i] == v[i + 1]) {
aux[p] = v[i];
p++;
} else if (v[i]>v[i + 1]) {
aux[p] = v[i];
p = p + 2;
}
}
for (i = 0; i < p; i++) {
if (aux[i] != -858993460) {
contor++;
} else {
contor = 0;
}
if (contor_aux < contor) {
contor_aux = contor;
}
}
contor = 0;
if (k - 1 <= contor_aux) {
printf("Numere sunt: ");
for (i = 0; i < n; i++) {
if (v[i] < v[i + 1]) {
contor++;
} else if (v[i]>v[i + 1]) {
contor++;
} else {
contor = 0;
}
if (contor == contor_aux) {
while (contor >= 0) {
printf("%d ", aux[i - contor]);
contor--;
}
}
}
} else {
printf("Acest vector nu are un sir de lungime de cel putin %d !", k);
}
printf("\n");
return 0;
}