码迷,mamicode.com
首页 > 其他好文 > 详细

UVA 10474 STL

时间:2016-05-04 22:24:49      阅读:119      评论:0      收藏:0      [点我收藏+]

标签:

题目实在是水题,主要是学习sort以及 lower_bound

x为待查找的元素

int p=lower_bound(a,a+n,x)-p;返回a中第一个大于或等于x的元素的位置,使用lower_bound前要将数组进行排序。函数lower_bound()在first和last中的前闭后开区间进行二分查找,返回大于或等于val的第一个元素位置。如果所有元素都小于val,则返回last的位置,且last的位置是越界的!

upper_bound

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
int stone[10010];
int main() {
	int n,q,x;
	int test=0;
	while(~scanf("%d%d",&n,&q)) {
		if(n==0 && q==0) break;
		test++;
		memset(stone,0,sizeof(stone));
		for(int i=0;i<n;i++) {
			scanf("%d",&stone[i]);
		} 
		sort(stone,stone+n);
		printf("CASE# %d:\n",test);
		for(int i=0;i<q;i++) {
			scanf("%d",&x);
			
			int p=lower_bound(stone,stone+n,x)-stone;
			if(stone[p]==x) {
				printf("%d found at %d\n",x,p+1);
			}
			else {
				printf("%d not found\n",x);
			}
		}
		
	}
	
	return 0;
}

 

UVA 10474 STL

标签:

原文地址:http://www.cnblogs.com/LinesYao/p/5459729.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!