Pro Bla:
#include <vector>
#include <limits>
#include <iostream>
int main()
{
std::vector<unsigned int> stream1 = {1, 18, 41, 5819923, 49924, 483885, 3883746, 18288334};
std::vector<unsigned int> stream2 = {1948485, 229318, 433331, 5819923, 49443924, 483885, 38583746, 1};
std::vector<bool> used(std::numeric_limits<unsigned int>::max());
for (unsigned int value : stream1)
{
used[value] = true;
}
for (unsigned int value : stream2)
{
if (used[value])
{
std::cout << value << " JE ve streamu 1" << std::endl;
}
else
{
std::cout << value << " NENI ve streamu 1" << std::endl;
}
}
return 0;
}
Složitost zjištění, jestli už prvek byl, je O(1). Zjištění výskytu diference si můžeš dodělat za domácí úkol. Pokud je rozsah tokenu větší než unsigned int, můžeš to hashovat a řešit kolize, složitost bude stále blízko O(1). Děkovat nemusíš.