#include #include #include #include #include #include #include using namespace std; enum Direction { UP, DOWN }; int main(){ string line; int safeReports = 0; stringstream wholeDoc; ifstream puzzle("input.txt", ifstream::in); while (getline(puzzle, line)) { istringstream lineStream(line); string numberString; list currentLevels; while (getline(lineStream, numberString, ' ')) { int number = stoi(numberString); currentLevels.push_back(number); } int numOfLevelsInLine = currentLevels.size(); int numOfLevelsProcessed = 0; //need to pull the first one to have something to compare to enum Direction dir; int prevlevel = currentLevels.front(); currentLevels.pop_front(); numOfLevelsProcessed++; if (prevlevel < currentLevels.front()){ dir = DOWN; } else if (prevlevel > currentLevels.front()){ dir = UP; } else { currentLevels.clear(); } for (int level = currentLevels.front(); !currentLevels.empty();level=currentLevels.front()){ if (abs(prevlevel-level)>3) {currentLevels.clear();break;} if(prevlevel==level){ currentLevels.clear();break;} if(dir==UP&&(prevlevelcurrentLevels.front())) {currentLevels.clear();break;} prevlevel=currentLevels.front(); currentLevels.pop_front(); numOfLevelsProcessed++; if(numOfLevelsProcessed==numOfLevelsInLine){ safeReports++; } } } cout << safeReports; puzzle.close(); }