#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; } |