1 条题解
-
0
C :
#include <stdio.h> const int MAXN = 1000; int main() { int a[MAXN]; int n, k, query, l, r, mid; scanf("%d%d", &n, &k); for (int i = 0;i < n;i++) { scanf("%d", &a[i]); } for (int i = 0;i < k;i++) { scanf("%d", &query); l = 0; r = n; while (l < r) { mid = (l + r) / 2; if (a[mid] < query) l = mid + 1; else r = mid; } if (a[l] == query) printf("%d ", l); else printf("-1 "); } puts(""); return 0; }
C++ :
#include <cstdio> #include <cstdlib> #include <stack> #include <algorithm> using namespace std; const int MAXN = 1000; int val[MAXN]; int main() { int n, k, query, l, r, mid; scanf("%d%d", &n, &k); for (int i = 0;i < n;i++) { scanf("%d", &val[i]); } for (int i = 0;i < k;i++) { scanf("%d", &query); l = 0; r = n; while (l < r) { mid = (l + r) / 2; if (val[mid] < query) l = mid + 1; else r = mid; } if (val[l] == query) printf("%d ", l); else printf("-1 "); } puts(""); return 0; }
Java :
import java.util.Scanner; public class Main{ public static void main(String[] args) { Scanner s = new Scanner(System.in) ; int n = s.nextInt() ; int k = s.nextInt() ; if(n<=1000&&k<=1000){ int a[] = new int[n]; int b[] = new int[k]; for (int i = 0; i < a.length; i++) { a[i] = s.nextInt() ; } for (int i = 0; i < b.length; i++) { b[i] = s.nextInt() ; } for (int i = 0; i < b.length; i++) { for (int j = 0; j < a.length; j++) { if(b[i]==a[j]){ System.out.print(j+" ") ; break ; } if(j==a.length-1){ System.out.print(-1+ " ") ; } } } System.out.println() ; } } }
- 1
信息
- ID
- 1899
- 时间
- 1000ms
- 内存
- 32MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者