#include <iostream>
using namespace std;
int orn(int* Rec, int RecS);
int checkRec(int* Rec, int RecS, bool Trend);
int main()
{
int RecS;
cin >> RecS;
int* Rec = new int[RecS];
for (int i = 0; i < RecS; i++)
cin >> Rec[i];
cout << orn(Rec, RecS) << "\n";
delete[] Rec;
return 0;
}
int orn(int* Rec, int RecS)
{
int Try1, Try2;
int* RecCopy = new int[RecS];
// copying arrays
for (int i = 0; i < RecS; i++)
RecCopy[i] = Rec[i];
Try1 = checkRec(Rec, RecS, true);
Try2 = checkRec(RecCopy, RecS, false);
delete[] RecCopy;
if (Try1 <= Try2)
return Try1;
else
return Try2;
}
int checkRec(int* Rec, int RecS, bool Trend)
{
int Ret;
Ret = 0;
for (int i = 1; i < RecS; i++)
{
if (Rec[i - 1] <= Rec[i] && Trend)
{
Ret++;
Rec[i] = -1000'000'000;
Trend = false;
}
else
if (Rec[i - 1] >= Rec[i] && !Trend)
{
Ret++;
Rec[i] = 1000'000'000;
Trend = true;
}
else
Trend = !Trend;
}
return Ret;
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | #include <iostream> using namespace std; int orn(int* Rec, int RecS); int checkRec(int* Rec, int RecS, bool Trend); int main() { int RecS; cin >> RecS; int* Rec = new int[RecS]; for (int i = 0; i < RecS; i++) cin >> Rec[i]; cout << orn(Rec, RecS) << "\n"; delete[] Rec; return 0; } int orn(int* Rec, int RecS) { int Try1, Try2; int* RecCopy = new int[RecS]; // copying arrays for (int i = 0; i < RecS; i++) RecCopy[i] = Rec[i]; Try1 = checkRec(Rec, RecS, true); Try2 = checkRec(RecCopy, RecS, false); delete[] RecCopy; if (Try1 <= Try2) return Try1; else return Try2; } int checkRec(int* Rec, int RecS, bool Trend) { int Ret; Ret = 0; for (int i = 1; i < RecS; i++) { if (Rec[i - 1] <= Rec[i] && Trend) { Ret++; Rec[i] = -1000'000'000; Trend = false; } else if (Rec[i - 1] >= Rec[i] && !Trend) { Ret++; Rec[i] = 1000'000'000; Trend = true; } else Trend = !Trend; } return Ret; } |
English