Gdzie jest błąd?

0

Treść zadanka:
//
W ciągu liczb, wzniesieniem nazwiemy element lub podciąg stojących obok siebie równych elementów, je±li
pierwszy element na lewo i pierwszy element stojący na prawo od tego podciągu s¡ mniejsze od elementów
tego podciągu. Elementy bezpośrednio poprzedzaj¡cy i następuj¡cy należą do wzniesienia.
//

Mój kod:

#include <iostream>
using namespace std;
int main()
{
int x;
cin>>x;
int tab[x];
for (int i=0; i<x; i++) 
    cin>>tab[i];
for (int i=0; i<x-2; i++)
{
    if (tab[i]<tab[i+1] && tab[i+1]>tab[i+2]) cout<<tab[i]<<" "<<tab[i+1]<<" "<<tab[i+2]<<endl;
}
return 0;
}                
 

A zadanko nie wchodzi na platformie :/
Gdzie jest błąd?

0

Dla danych takich, że:
ilość = 7
ciąg: 2, 3, 4, 4, 4, 3, 5
Nie dostałem odpowiedzi, tak samo gdy 'wzniesieniem' jest ciąg 2 cyfr. Z tego co widzę po sprawdzeniu na szybko działa tylko dla wzniesienia z 1 cyfry.

0

Bo wzniesienie składa się z 3 cyfr, tzn.
5
2 2 1 4 1
wyjście:
1 4 1

4
3 5 3 4
wyjście:
3 5 3

8
2 1 4 3 2 2 3 2
wyjście:
1 4 3
2 3 2

0

Ktoś z nas nie rozumie treści zadania:
"wzniesieniem nazwiemy element lub podciąg stojących obok siebie równych elementów, jeżeli pierwszy element na lewo i pierwszy element stojący na prawo od tego podciągu są mniejsze od elementów tego podciągu".
Poczekajmy na opinię kolejnej osoby :]

0

Hmm, zmieniłem, ale nadal nie wchodzi.
To jest kod:

 
#include <iostream>
using namespace std;
int main()
{
int x;
int z=0, w=0, d=0;
cin>>x;
int tab[x];
int wzn[x];
for (int i=0; i<x; i++) 
    cin>>tab[i];
for (int i=0; i<x; i++)
{
	if (tab[i]>tab[i-1] && i<=x-2) 
	{
		if (z==0) cout<<tab[i-1]<<" ";
		z=1;
		cout<<tab[i]<<" ";
		// 3 5 3 4
	}
	else 
	{ 
		w=1;
		if (z==1 && w==1) {cout<<tab[i]<<endl; z=0; w=0;}
	} 
	
}
return 0;
}            
1

Zrób sobie rysunek i rozpisz to jako automat deterministyczny turinga.

0

OK, dzięki :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1