0
已解决
徐子宸
中级天翼
中级天翼
1754 序列询问经验值:1200
题目描述 Description
给一个长度为 n 的单调增的正整数序列,即序列中每一个数都比前一个数大。
对该序列进行 m 次询问,每次询问一个数 x,问序列中最后一个小于等于 x 的数是多少?
输入描述 Input Description
第一行:整数 n m,分别表示序列长度和询问次数
第二行:n 个数组成的单调增序列
接下来m行:每次询问用的数 x
输出描述 Output Description
输出:m行,每行表示该序列中最后一个小于等于 x 的数是的大小。
假如找不到这个数则输出 -1。
样例输入 Sample Input
5 3 1 2 3 4 6 5 1 3
样例输出 Sample Output
4 1 3
数据范围及提示 Data Size & Hint
1 <= n,m <=100000
序列中的元素及 x 的大小都 <= 10^6
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int a[1000050];
int main(){
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=1;i<=m;i++){
int x;
cin>>x;
if(a[n]<x||a[1]>x){
cout<<-1<<endl;
}else{
for(int j=n;j>=1;j--){
if(a[j]<=x){
cout<<a[j]<<endl;
break;
}
}
}
}
return 0;
}
60分?
为啥?
大佬求助!