//C++20
#include <iostream>
#include <random>
#include <chrono>
#include <unordered_map>
int main()
{
size_t count=10'000'000u;
//Π³Π΅Π½Π΅ΡΠΈΠΌ Π² ΠΏΡΠ΅Π΄Π΅Π»Π°Ρ
, ΡΠΎΠΏΠΎΡΡΠ°Π²ΠΈΠΌΡΡ
Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ
std::mt19937 gen(std::random_device{}());
std::uniform_int_distribution<unsigned int> dis(0u,count);
std::vector<int> v;
v.reserve(count);
for(size_t i=0; i<count; ++i)
{
v.push_back(dis(gen));
}
auto t1=std::chrono::steady_clock::now();
//Π΄Π»Ρ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° Π½Π΅ Π½ΡΠΆΠ½ΠΎ, ΡΡΠΎ Π΄Π»Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠ΅Π³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π°
size_t numbers_to_show{};
//ΡΡΠ΄Π° ΠΊΠΎΠΏΠΈΠΌ ΡΡΡΠΎΠΊΡ Ρ ΡΠΈΡΠ»Π°ΠΌΠΈ
std::string s;
s.reserve(1024);
//Π±Π»ΠΎΠΊ Π½ΡΠΆΠ΅Π½, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π²ΡΠ·ΠΎΠ² Π΄Π΅ΡΡΡΡΠΊΡΠΎΡΠ° ΠΌΠ°ΠΏΡ
//ΡΠΎΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠΏΠ°ΡΡΡ Π² ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅
{
std::unordered_map<int, size_t> map;
map.reserve(count);
for(auto val : v){++map[val];}
for(auto val : v)
{
if(map[val]==1)
{
s.append(std::to_string(val)).append(",");
++numbers_to_show;
}
}
}
auto t2=std::chrono::steady_clock::now();
//Π²ΡΠ²ΠΎΠ΄ ΡΠΈΡΠ΅Π» Π½Π° ΡΠΊΡΠ°Π½ ΠΎΡΠΊΠ»ΡΡΠΈΠ»
//std::cout << s << '\n';
std::cout <<"numbers to show: "<< numbers_to_show<<'\n';
std::cout <<"time = "<< std::chrono::duration_cast<std::chrono::duration<double,std::milli>>(t2-t1)<<'\n';
}