解题思路:可以用二分法查找解题,因为二分法查到最后刚好就是要替换的数,直接取他的下标就好
注意事项:最高的话,要单独拿出来解
参考代码:
#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 人评分
2005年春浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:584 |
大神老白 (C语言代码)浏览:715 |
简单的a+b (C语言代码)浏览:760 |
C语言训练-数字母 (C语言代码)浏览:585 |
C语言程序设计教程(第三版)课后习题6.6 (C语言代码)浏览:624 |
C语言程序设计教程(第三版)课后习题8.5 (C语言代码)浏览:936 |
WU-判定字符位置 (C++代码)浏览:1406 |
C语言程序设计教程(第三版)课后习题8.8 (C语言代码)浏览:544 |
C语言程序设计教程(第三版)课后习题9.6 (C语言代码)浏览:373 |
C语言程序设计教程(第三版)课后习题4.9 (C语言代码)浏览:689 |