解题思路:可以用二分法查找解题,因为二分法查到最后刚好就是要替换的数,直接取他的下标就好
注意事项:最高的话,要单独拿出来解
参考代码:
#include<bits/stdc++.h> using namespace std; int main() { long long int n,m,mark,j; long long int x[200000]; cin>>n>>m; for(int i=0,flag=1;i<n;i++) { cin>>x[i]; if(flag&&x[i-1]>x[i])//找到队列最高的人 { mark=i-1; flag--; } } int expect; cin>>expect; if(m>x[mark])//新同学最高的情况 { cout<<mark+2<<endl; return 0; } int high,low,mid; if(expect==1)//左边 { high=mark; low=0; while(low<=high)//左边是从小到大排列 { mid=(low+high)>>1;//二进制一退位,相当于除以二 if(x[mid]<=m) { low=mid+1; } else { high=mid-1; } } } else if(expect==2)//右边 { low=mark;high=n-1; while(low<=high)//右边是从大到小排列 { mid=(low+high)>>1; if(x[mid]>=m) { low=mid+1; } else { high=mid-1; } } } cout<<low+1<<endl;//因为数组下标是从0开始,所以加一 return 0; }
0.0分
1 人评分
C语言训练-计算一个整数N的阶乘 (C语言代码)浏览:821 |
C语言程序设计教程(第三版)课后习题12.3 (C语言代码)浏览:878 |
数列排序 (C语言代码)浏览:858 |
WU-图形输出 (C++代码)浏览:836 |
C语言程序设计教程(第三版)课后习题9.10 (C语言代码)浏览:583 |
printf基础练习2 (C语言代码)浏览:796 |
求圆的面积 (C语言代码)浏览:1755 |
数对 (C语言代码)浏览:762 |
2003年秋浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:654 |
用筛法求之N内的素数。 (C语言代码)浏览:595 |