icpc:problems:luogup1918
problems | |
---|---|
名称 | 保龄球 |
题目编号 | P1918 |
题目链接 | luogu.com.cn/… |
来源 | Luogu |
算法分类 | 二分, 二分_例题 |
难易程度 | 容易 |
保龄球
想法
先对保龄球排序,排序过程中记录原先的位置。二分查找位置,如果找到了输出位置,如果没找到输出0。
代码实现
#include<cstdio> #include<algorithm> using namespace std; struct node{ int val, sit; friend bool operator<(const node a, const node b) { return a.val < b.val; } }line[100010]; int main() { int n, m; scanf("%d", &n); for(int i=1; i<=n; i++) { scanf("%d", &line[i].val); line[i].sit = i; } sort(line+1, line+1+n); scanf("%d", &m); for(int i=1; i<=m; i++) { int l = 1, r = n, mid, val; scanf("%d", &val); while(l < r) { mid = (l + r) / 2; if(line[mid].val < val) l = mid+1; else r = mid; } if(line[l].val != val) printf("0\n"); else printf("%d\n", line[l].sit); } return 0; }
/app/www/public/data/pages/icpc/problems/luogup1918.txt · 最后更改: 2024/01/25 11:50 由 温婕莺