大理石在哪儿 UVa10474

现有N个大理石,每个大理石写了一个非负整数。首先把各数从小到大排序,然后回答Q个问题。每个问题是否有一个大理石写着某个整数x,如果是,还要回答哪个大理石上写着x。排序后的大理石从左到右编号为1~N。(在样例中,为了节约篇幅,所有大理石上的数合并到一行,所有问题也合并到一行。)

样例输入:

4 1

2 3 5 1

5

5 2

1 3 3 3 1

2 3

样例输出:

CASE# 1:

5 found at 4

CASE# 2:

2 not found

3 found at 3

//UVa 10474
#include <iostream>
#include <algorithm>
using namespace std;
const int maxn=1000;
int main(){
	int n,q,x,a[maxn],kase=0;
	while (scanf("%d%d",&n,&q)==2 && n)
	{
		++kase;
		for(int i=0;i<n;i++) scanf("%d",&a[i]);
		sort(a,a+n);
		while(q--){
			scanf("%d",&x);
			int p=lower_bound(a,a+n,x)-a;//lower_bound(begin,end,num) 若存在返回第一个num的地址,否则返回end。返回地址-起始地址begin得num下标
			printf("CASE# %d\n",kase);
			if(a[p]==x) printf("%d found at %d\n",x,p+1);
			else printf("%d not found\n",x);
		}
	}
	return 0;
}

  

原文地址:https://www.cnblogs.com/codercql/p/12534206.html

时间: 2024-10-18 11:46:49

大理石在哪儿 UVa10474的相关文章

UVA10474 大理石在哪儿 Where is the Marble?

UVA10474 大理石在哪儿 Where is the Marble? 题意翻译 现有N个大理石,每个大理石上写了一个非负整数.首先把各数从小到大排序,然后回 答Q个问题.每个问题问是否有一个大理石写着某个整数x,如果是,还要回答哪个大理石上 写着x.排序后的大理石从左到右编号为1-N. 输入输出样例: //输入 4 1 4个大理石 1个问题 2 2 3 5 1 大理石上写的数字 3 5 1 5 这个5是问题 是否有一个大理石写着5 5 2 1 3 3 3 1 2 3 0 0 //输出 CAS

大理石在哪儿(UVa10474)

题目具体描述见:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=835&page=show_problem&problem=1415 C++ 11代码如下: 1 #include<iostream> 2 #include<algorithm> 3 using namespace std; 4 int num[10000]; 5 int mai

uva10474大理石在哪儿where is the marble?

背景:做了这么久的题,唯一一道一次ac的,可见这道题是如何的简单. 思路:思路很清楚的模拟题,先排序再查找. 学习:sort函数和lower_bound函数,sort函数排序就不多说了,lower_bound函数作用是查找一个数组中大于等于x的第一个位置. #include <iostream> #include <stdio.h> #include <algorithm> using namespace std; int figue[10000]; void prin

UVA10474 Where is the Marble?

问题链接:UVA10474 Where is the Marble?. 题意简述:输入n个整数,代表大理石编号:再输入q个数(编号),问是否有这个编号的大理石,位置在哪里? 这个问题用C++语言编写程序,主要是为了练习使用STL的功能. 程序中,使用了算法库(algorithm)中的两个函数:使用sort()函数用于对数据排序,该函数的参数比C语言的同类函数简单,程序更加易于书写:使用函数lower_bound()查找元素,简单方便. AC的C++语言程序如下: /* UVA10474 Wher

Android apps浅析01-Amazed:一个简单但令人上瘾的加速度为基础的大理石指导游戏。

Android apps浅析01-Amazed:一个简单但令人上瘾的加速度为基础的大理石指导游戏. 这个例子中只有4个类,一个绘制大理石类Marble,一个绘制迷宫类Maze,一个Amazed视图类,一个Amazed活动类 1. 绘制大理石类Marble通过Canvas和Paint绘制,同时提供移动x轴和y轴坐标的方法,每个大理石都有一个状态值:活的/死的 /* * Copyright (C) 2008 Jason Tomlinson. * * Licensed under the Apache

互联网+大理石新商业模式高峰论坛开幕

全球石材企业市场竞争格局 根据中国石材协会的统计数据, 2012 年世界石材荒料产量最大的 10 个国家 是中国.印度.土耳其.巴西.意大利.伊朗.西班牙.埃及.葡萄牙和美国. 从产出规模上来看,中国和印度分别占总产量的 30.08%和 14.20%,合计占 40% 以上;土耳其.巴西.意大利.伊朗和西班牙合计约占总产量的30%;其他国家 占据剩余不到 30%. 从世界主要石材企业竞争格局来看,石材生产.大型贸易企业主要集中在日本.印度.美国.意大利.西班牙等石材强国,如日本的ADVAN.印度的

「CJOJ2736」「POJ1014」大理石分割

Problem Description Marsha和Bill收藏了一些大理石.他们想要把这些大理石平均分配给两个人.如果大理石的价值一样,这将很容易做到,因为他们可以简单的对半分.不幸的是,一些大理石比其他的更大或者更漂亮.因此Marsha和Bill给每个大理石都规定了一个价值,它是一个1~6之间的自然数.现在他们想要把这些大理石分成两部分,每部分的价值之和相等.但他们很快意识到有可能不存在这样的分法(即使大理石的价值之和是偶数).例如,如果大理石的价值分别是1,1,3,4,4,就不可能被分为

CH5E07 划分大理石(背包dp+二进制拆分)

传送门     大意: 有价值分别为1..6的大理石各a[1..6]块,现要将它们分成两部分,使得两部分价值之和相等,问是否可以实现.其中大理石的总数不超过20000. 解题思路: 妥妥的多重背包+二进制拆分,主要写一下二进制拆分存个档(儿时的噩梦). 总所周知,20,21,22,……2k-1从中挑选若干个相加可以得到0~2k-1中的任意数.那么将一个数s进行二进制拆分,首先要做的就是找到最大k满足2k-1<=s,设c=s-2k+1.显而易见20,21,……,2k-1,c可以从中挑选若干个数相加

大理石在哪里UVa 10474

我自己写的代码 #include<iostream>#include<algorithm>using namespace std;int main(){    int N,a[100],b[100],Q,flag;    int k=1;    while(cin>>N>>Q)    {        for(int i=0;i<N;i++)        {            cin>>a[i];        }        fo