2 条题解
-
1
#include<bits/stdc++.h> using namespace std; int a[10000010],n; int f(int x){ int u=upper_bound(a+1,a+1+n,x)-a-1; if(a[u]!=x||(a[1]!=0&&x==0)) return -1; return u; } int main(){ int m; ios::sync_with_stdio(false); cin.tie(0),cout.tie(0); cin>>n; for(int i=1;i<=n;i++) cin>>a[i]; cin>>m; for(int i=1;i<=m;i++){ int t; cin>>t; cout<<f(t)<<" "; } return 0; } -
-1
#include #include #include using namespace std;
int main() { int n; cin >> n;
vector<int> a(n); for (int i = 0; i < n; i++) { cin >> a[i]; } int m; cin >> m; for (int i = 0; i < m; i++) { int x; cin >> x; // 使用 upper_bound 找到第一个 > x 的位置 auto it = upper_bound(a.begin(), a.end(), x); // 如果 it 不是 begin,前一个位置可能是 x if (it != a.begin() && *(it - 1) == x) { // 输出位置(从1开始编号) cout << (it - a.begin()) << " "; // 注意:it-1 的位置是 (it - a.begin()) } else { cout << "-1 "; } } cout << endl; return 0;}
- 1
信息
- ID
- 14542
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 5
- 已通过
- 3
- 上传者