Dzień dobry mam do napisania pewien algorytm. Polega on na policzeniu ile minimalnie razy pływak przepłynął basen (mógł robić przerwy) . Na 1 wierszu wejścia dostajemy ilość zapisów odległości. (1 ≤ N ≤ 1 000 000) A na 2 odległości od brzegu (0 ≤ X ≤ 10^9). Na wyjściu musimy wypisać liczbę minimalnych przepłyniętych "basenów".
Napisałem pewien programik , ale dostaje tylko 22% punktów na i nie wiem dlaczego. Podsyłam kod. Mam nadzieję że jasno wytłumaczyłem zadanie.W punktację wlicza się szybkość działania algorytmu i czy potrafi przetworzyć duże dane (zgodne z zakresami).
Przykładowe wejścia i wyjścia
IN:
7
3 7 11 11 6 2 4
OUT:
3
Najpierw płynął do przodu aż do 11 metrów potem przerwa i wraca przez 6 do 0 i potem znowu płynie przez 2 i 4
#include <iostream>
using namespace std;
int main()
{
long long n=0,a=0,b=0,c=0,i = 0,j = 2;
long long x = 1;
bool isToward = false , cancel = false;
cin >> n;
int tab[n];
while(i<n)
{
cin >> tab[i];
i++;
}
if(n > 2)
{
while(j < n)
{
a = tab[j-2];
b = tab[j-1];
c = tab[j];
if(a > b && j==2) { x++;}
//else {cout << "a: " << a << " b: " << b << " c: " << c << " x: " << x << endl;}
if(a < b)
{ isToward = true;} if(a > b){ isToward = false;}
if(isToward && c<b) {x++;}
if(!isToward && c>b) {x++;}
cancel == false;
j++;
//cout << x << " " << j << endl;
if(x==0) {x = 1;}
}
}
else {x = 1;
}
cout << x << endl;
return 0;
}
3
z tych wejść.