Nevím, jestli se mi to zdá kvůli pokročilé noční hodině, nebo se tady fakt lidi radí, jak vyřešit nejasně formulovaný problém.
Milan:
- Původní dotaz bych vyřešil setříděním obou tabulek podle ID a následným sekvenčním projitím. Setřídit 50k čísel je hračka.
Bla:
- Zjišťování, zda byl token použit, si vysloveně říká o hashtable.
- Tu deltu jsem asi nepochopil. Pokud jsou ta čísla dvojciferná, můžeš mít nejvíc 99 delt a je to triviální. Tobě ale přichází i pozice, proti které musíš porovnávat? Ve třiceti dvou číslech je jenom comb(32; 2) = 496 párů, ne? Takže si můžeš udělat tabulku 496*99 = 50 kb (resp. 200 kB, pokud potřebuješ držet ještě nějaký index) a pak se podíváš na vybraná políčka.
gamer:
- Chápu správně, že indexuješ pole přímo tou hodnotou? Tazatel vůbec neuvedl, jak může být hodnota velká, klidně to můžou být 32b, nebo dokonce 64b čísla (sám používáš typ int); v prvním případě ti to sežere 4 Gb, ale spíš 4 GB (protože to ten bool vektor asi bude zarovnávat na bajty, ale C++ neznám) paměti, v druhém případě se ti to do paměti nevejde v žádném případě.