题目背景 英语考试结束了,成绩惨不忍睹......
题目描述 11班的英语考试考的极差,班主任zozo十分生气,她想在n名考生中找到一名考生,使成绩比他低的同学受到惩罚。同时zozo在班上有m位十分喜欢的同学,zozo不想让他们收到惩罚,现在知道了这m位同学的分数,求zozo要找的那名考生的名次使zozo能惩罚尽可能多的人
输入格式 第一行两个整数,分别是n,m
第二行n个升序的整数,表示已经排好的名次的分数
第三行m个整数,表示zozo喜欢的同学的分数
输出格式 一个数,表示zozo要找的那名同学的名次
输入输出样例 输入 #1复制 10 3 79 90 101 110 119 124 130 137 140 148 148 124 137 输出 #1复制 5 说明/提示 对于20%的数据,n <= 100 ,m <= n
对于60%的数据,n <= 10^3,m <= n
对于100%的数据,n <= 10^4,m <= n 代码:```cpp #include #include using namespace std; long long lef,righ,mid,ans,q[1000005],w[1000005],n,m,e=100000,r,j,k,l,c,v; int main(){ cin>>n>>m; for(int i=1;i<=n;i++){ cin>>q[i]; } for(int i=1;i<=m;i++){ cin>>w[i]; if(e>=w[i]){ e=min(e,w[i]); ///////////////////////////////////////////////////////////////////////////////r=i; }
////////////////////////////////////////////////////////////////////////////////////cout<<e<<endl;
}
cout<<e<<endl;
lef=1;
righ=m;
while(lef<righ){
mid=(lef+righ)/2;
if(lef<e){
lef=mid+1;
ans=mid;
}
if(righ>e){
righ=mid-1;
}
if(mid=e){
cout<<mid;
return 0;
}
////////////////////////////////////////////////////////////////////////////////////// cout<<mid<<endl;
}
cout<<ans;
}
#include<iostream>
#include<cmath>
using namespace std;
long long lef,righ,mid,ans,q[1000005],w[1000005],n,m,e=100000,r,j,k,l,c,v;
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>q[i];
}
for(int i=1;i<=m;i++){
cin>>w[i];
if(e>=w[i]){
e=min(e,w[i]);
///////////////////////////////////////////////////////////////////////////////r=i;
}
////////////////////////////////////////////////////////////////////////////////////cout<<e<<endl;
}
cout<<e<<endl;
lef=1;
righ=m;
while(lef<righ){
mid=(lef+righ)/2;
if(lef<e){
lef=mid+1;
ans=mid;
}
if(righ>e){
righ=mid-1;
}
if(mid=e){
cout<<mid;
return 0;
}
////////////////////////////////////////////////////////////////////////////////////// cout<<mid<<endl;
}
cout<<ans;
}