#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<stdbool.h>
#define MAX 500000
bool ok[MAX] = { false };
struct hear {
char name[21];
};
struct hear arr[MAX];
int x, y,sum=0;
int compare(const struct hear* a, const struct hear* b) {
if(strcmp(a
->name
, b
->name
)>0) return 1;
if (strcmp(a
->name
, b
->name
) < 0) return -1;
return 0;
}
void func(char* temp) {
int low = 0, high = x- 1;
int ans = -1;
while (low <= high) {
int mid = (low + high) / 2;
if (strcmp(arr
[mid
].
name, temp
) == 1) high = mid - 1;
else if (strcmp(arr
[mid
].
name, temp
) == -1) low = mid + 1;
else {
ans = mid;
break;
}
}
if (ans!=-1) {
ok[ans] = true;
}
return;
}
int main() {
for (int i = 0; i < x; i++)
scanf("%s", arr
[i
].
name); qsort(arr
, x
, sizeof(struct hear
), compare
); for (int i = 0; i < y; i++) {
char temp[21] = { 0 };
func(temp);
}
for (int i = 0; i < x; i++)
if (ok[i])
sum++;
for (int i = 0; i < x; i++)
if (ok[i])
return 0;
}
I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8c3RkbGliLmg+CiNpbmNsdWRlPHN0cmluZy5oPgkKI2luY2x1ZGU8c3RkYm9vbC5oPgojZGVmaW5lIE1BWCA1MDAwMDAKYm9vbCBva1tNQVhdID0geyBmYWxzZSB9OwpzdHJ1Y3QgaGVhciB7CgljaGFyIG5hbWVbMjFdOwp9OwpzdHJ1Y3QgaGVhciBhcnJbTUFYXTsKaW50IHgsIHksc3VtPTA7CmludCBjb21wYXJlKGNvbnN0IHN0cnVjdCBoZWFyKiBhLCBjb25zdCBzdHJ1Y3QgaGVhciogYikgewoJaWYoc3RyY21wKGEtPm5hbWUsIGItPm5hbWUpPjApCgkJcmV0dXJuIDE7CglpZiAoc3RyY21wKGEtPm5hbWUsIGItPm5hbWUpIDwgMCkKCQlyZXR1cm4gLTE7CglyZXR1cm4gMDsKfQp2b2lkIGZ1bmMoY2hhciogdGVtcCkgewoJaW50IGxvdyA9IDAsIGhpZ2ggPSB4LSAxOwoJaW50IGFucyA9IC0xOwoJd2hpbGUgKGxvdyA8PSBoaWdoKSB7CgkJaW50IG1pZCA9IChsb3cgKyBoaWdoKSAvIDI7CgkJaWYgKHN0cmNtcChhcnJbbWlkXS5uYW1lLCB0ZW1wKSA9PSAxKQoJCQloaWdoID0gbWlkIC0gMTsKCQllbHNlIGlmIChzdHJjbXAoYXJyW21pZF0ubmFtZSwgdGVtcCkgPT0gLTEpCgkJCWxvdyA9IG1pZCArIDE7CgkJZWxzZSB7CgkJCWFucyA9IG1pZDsKCQkJYnJlYWs7CgkJfQoJfQoJaWYgKGFucyE9LTEpIHsKCQlva1thbnNdID0gdHJ1ZTsKCX0KCXJldHVybjsKfQppbnQgbWFpbigpIHsKCXNjYW5mKCIlZCAlZCIsICZ4LCAmeSk7CgkKCWZvciAoaW50IGkgPSAwOyBpIDwgeDsgaSsrKQoJCXNjYW5mKCIlcyIsIGFycltpXS5uYW1lKTsKCXFzb3J0KGFyciwgeCwgc2l6ZW9mKHN0cnVjdCBoZWFyKSwgY29tcGFyZSk7Cglmb3IgKGludCBpID0gMDsgaSA8IHk7IGkrKykgewoJCWNoYXIgdGVtcFsyMV0gPSB7IDAgfTsKCQlzY2FuZigiJXMiLCB0ZW1wKTsKCQlmdW5jKHRlbXApOwoJfQoJZm9yIChpbnQgaSA9IDA7IGkgPCB4OyBpKyspCgkJaWYgKG9rW2ldKQoJCQlzdW0rKzsKCXByaW50ZigiJWRcbiIsIHN1bSk7Cglmb3IgKGludCBpID0gMDsgaSA8IHg7IGkrKykKCQlpZiAob2tbaV0pCgkJCXByaW50ZigiJXNcbiIsIGFycltpXS5uYW1lKTsKCQlyZXR1cm4gMDsKfQ==