题解 | 坠落的蚂蚁
坠落的蚂蚁
https://www.nowcoder.com/practice/fdd6698014c340178a8b1f28ea5fadf8
#include <iostream> #include<algorithm> #include <vector> using namespace std; int main() { int N; int arr[100][2]; while (scanf("%d", &N) != EOF) { // 注意 while 处理多个 case int posA = -1; for (int i = 0; i < N; i++) { scanf("%d %d", &arr[i][0], &arr[i][1]); if (arr[i][1] == 0)posA = arr[i][0]; } vector<int>vec1; vector<int>vec2; for (int i = 0; i < N; i++) { if (arr[i][0] < posA && arr[i][1] == 1) { //记录A左边且向右跑的蚂蚁数目 vec1.push_back(arr[i][0]); } if (arr[i][0] > posA && arr[i][1] == -1) { //记录A右边且向左跑的蚂蚁数目 vec2.push_back(arr[i][0]); } } sort(vec1.begin(), vec1.end()); sort(vec2.begin(), vec2.end()); if (vec1.size() == vec2.size())printf("Cannot fall!\n"); else if (vec1.size() > vec2.size()) { printf("%d\n", 100 - vec1[vec1.size() - vec2.size() - 1]); } else { printf("%d\n", vec2[vec1.size()]); } } } // 64 位输出请用 printf("%lld")