-
Notifications
You must be signed in to change notification settings - Fork 4
/
1025.c
69 lines (60 loc) · 1.68 KB
/
1025.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
//Questão 1025 - Onde Está o Mármore? - URI Online Judge
#include <stdio.h>
#include <stdbool.h>
void quick_sort(int *a, int left, int right){
int i, j, x, y;
i = left;
j = right;
x = a[(left + right) / 2];
while(i <= j){
while(a[i] < x && i < right)
i++;
while(a[j] > x && j > left)
j--;
if(i <= j){
y = a[i];
a[i] = a[j];
a[j] = y;
i++;
j--;
}
}
if(j > left)
quick_sort(a, left, j);
if(i < right)
quick_sort(a, i, right);
}
int main(){
int n, q, cases = 1, i, consulta, flag;
while(true){
scanf("%d %d", &n, &q);
if(n == 0 && q == 0)
break;
printf("CASE# %d:\n", cases);
cases++;
//Flag indicará se o número foi encontrado ou não no vetor
//Preenchendo o vetor de mármores
int marmores[n];
for(i = 0; i < n; i++)
scanf("%d", &marmores[i]);
//Ordenando os mármores
quick_sort(marmores, 0, n-1);
while(q > 0){
scanf("%d", &consulta);
flag = false;
//Busca o primeiro mármore igual ao valor da consulta Q, com uma busca sequencial
for(i = 0; i < n; i++){
if(marmores[i] == consulta){
flag = true;
break;
}
}
//Verificação final para exibição dos resultados
if(flag == true)
printf("%d found at %d\n", consulta, i+1);
else
printf("%d not found\n", consulta);
q--;
}
}
}