///* // * algorithm02.cpp // * // * Created on: May 23, 2024 // * Author: 28032 // */ ////要求有多少人被感染,可以先求有多少人不会被感染 ////将跑者的位置列在数组上,以感染者为分界线划分成两群人 ////左边的不会被感染的人是速度比右边最慢的人还慢的人 ////右边的不会被感染的人是速度比左边最快的人还快的人 //#include //#include // //using namespace std; // //int N,num,**runner,cnt; // //void Swap(int a,int b) //{ // for(int i = 0;i < 2;i++) // { // int tmp = runner[i][a]; // runner[i][a] = runner[i][b]; // runner[i][b] = tmp; // } //} // //int part(int* r, int low, int hight) //划分函数 //{ // int i = low, j = hight, pivot = r[low]; //基准元素 // while (i < j) // { // while (ipivot) //从右向左开始找一个 小于等于 pivot的数值 // { // j--; // } // if (i < j) // { // Swap(i++,j); // } // while (i < j && r[i] <= pivot) //从左向右开始找一个 大于 pivot的数值 // { // i++; // } // if (i < j) // { // Swap(i,j--); // } // } // return i; //返回最终划分完成后基准元素所在的位置 //} //void Quicksort(int* r, int low, int hight) //{ // int mid; // if (low < hight) // { // mid = part(r, low, hight); // 返回基准元素位置 // Quicksort(r, low, mid - 1); // 左区间递归快速排序 // Quicksort(r, mid+1, hight); // 右区间递归快速排序 // } //} // // //int main() //{ // cin>>N>>num; // cnt = 0; // // runner = new int*[2]; // // pair infected; // // for(int i = 0;i < 2;i++) // { // runner[i] = new int[N]; // for(int j = 0;j < N;j++) // cin>>runner[i][j]; // } // infected.first = runner[0][num-1]; // infected.second = runner[1][num-1]; // // Quicksort(runner[0],0,N-1); // // int LeftMaxSpeed = -1e9, // RightMinSpeed = 1e9; // for(int i = 0;i < N;i++) // { // if(runner[0][i] < infected.first) // LeftMaxSpeed = max(LeftMaxSpeed,runner[1][i]); // else if(runner[0][i] > infected.first) // RightMinSpeed = min(RightMinSpeed,runner[1][i]); // else // { // LeftMaxSpeed = max(LeftMaxSpeed,runner[1][i]); // RightMinSpeed = min(RightMinSpeed,runner[1][i]); // num = i; // } // } // for(int i = 0;i < num;i++) // if(runner[1][i] <= RightMinSpeed) // cnt++; // for(int i = num + 1;i < N;i++) // if(runner[1][i] >= LeftMaxSpeed) // cnt++; // // cout<