#include <iostream> #include <vector> using namespace std; int changedNumber(int first, int second); int main() { size_t soundLength; cin >> soundLength; vector<int> sounds; int singleSound = 0; for (size_t i = 0; i < soundLength; ++i) { cin >> singleSound; sounds.push_back(singleSound); } vector<short> trends; for (size_t i = 1; i < sounds.size(); ++i) { if (sounds[i] > sounds[i-1]) { trends.push_back(1); } else if (sounds[i] < sounds[i-1]) { trends.push_back(-1); } else { trends.push_back(0); } } // for (auto sound : sounds) // { // //cout << sound << " "; // } // cout << endl; // for (auto trend : trends) // { // //cout << trend << " "; // } //cout << endl; int result = 0; for (size_t i = 0; i < trends.size() - 1; ++i) { short currentTrend = trends[i]; short nextTrend = trends[i+1]; //cout << currentTrend << " "; if (nextTrend == 0) { //cout << "current trend = " << currentTrend << endl; result++; trends[i+1] = currentTrend * -1; trends[i+2] = trends[i+2] * -1; //cout << "te same "; } else if (currentTrend + nextTrend != 0) { result++; trends[i+1] *= -1;// currentTrend * -1; // trends[i+2] = trends[i+2] * -1; ++i; //cout << "monotonny "; } else { //cout << "ok "; } } cout << result; return 0; }
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 70 71 72 73 74 75 76 77 78 79 80 81 82 | #include <iostream> #include <vector> using namespace std; int changedNumber(int first, int second); int main() { size_t soundLength; cin >> soundLength; vector<int> sounds; int singleSound = 0; for (size_t i = 0; i < soundLength; ++i) { cin >> singleSound; sounds.push_back(singleSound); } vector<short> trends; for (size_t i = 1; i < sounds.size(); ++i) { if (sounds[i] > sounds[i-1]) { trends.push_back(1); } else if (sounds[i] < sounds[i-1]) { trends.push_back(-1); } else { trends.push_back(0); } } // for (auto sound : sounds) // { // //cout << sound << " "; // } // cout << endl; // for (auto trend : trends) // { // //cout << trend << " "; // } //cout << endl; int result = 0; for (size_t i = 0; i < trends.size() - 1; ++i) { short currentTrend = trends[i]; short nextTrend = trends[i+1]; //cout << currentTrend << " "; if (nextTrend == 0) { //cout << "current trend = " << currentTrend << endl; result++; trends[i+1] = currentTrend * -1; trends[i+2] = trends[i+2] * -1; //cout << "te same "; } else if (currentTrend + nextTrend != 0) { result++; trends[i+1] *= -1;// currentTrend * -1; // trends[i+2] = trends[i+2] * -1; ++i; //cout << "monotonny "; } else { //cout << "ok "; } } cout << result; return 0; } |