Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- #define MAX 100
- typedef struct {
- char palavras[MAX];
- } PALAVRAS;
- int contar(char A[], char B[])
- {
- int i;
- int menor = strlen(A);
- if(menor > strlen(B)) menor = strlen(B);
- for(i = 0; i < menor; i++)
- {
- if(A[i] == '\0' || B[i] == '\0') return i;
- else if(A[i] != B[i]) return i + 1;
- }
- return i;
- }
- int bb(PALAVRAS p[], int c, int f, char palavra[], int *cont)
- {
- if(c > f) return -1;
- int meio = (c + f) / 2;
- *cont += contar(p[meio].palavras, palavra);
- //printf("quero = %s | estou = %s\n", palavra, p[meio].palavras);
- int r = strcmp(palavra, p[meio].palavras);
- if(!r) return meio;
- else if(r < 0) return bb(p, c, meio - 1, palavra, cont);
- else return bb(p, meio + 1, f, palavra, cont);
- }
- int main()
- {
- int n, n_pesquisa, i;
- scanf("%d %d", &n, &n_pesquisa);
- char aleatoria[MAX];
- PALAVRAS p[n];
- for(i = 0; i < n; i++)
- {
- getchar();
- scanf("%s", p[i].palavras);
- }
- for(i = 0; i < n_pesquisa; i++)
- {
- getchar();
- scanf("%s", aleatoria);
- int cont = 0;
- int idx = bb(p, 0, n - 1, aleatoria, &cont);
- if(idx == -1) printf("NAO %d\n", cont);
- else printf("SIM %d\n", cont);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement