#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
#include <time.h>
const uint32_t n = 100000;
const uint32_t m = n/2;//+1 - если n - нечётное
int main()
{
int32_t arr[n];
int32_t mem[m];
uint32_t count_m = 0;
uint32_t res = 0;
uint8_t PRINT;
//--------------------------- заполняем массив ---------------
printf(" RAND_MAX = %d\n", RAND_MAX);//проверяем макс. значение
srand(time(NULL));
for(uint32_t i = 0; i < n; i++)
arr[i] = rand();
//--------------------------------------------------------
printf(" arr[%d] mem[%d]\n", n, m);
clock_t start = clock();
// ----------------------------- старт ------------------
for(uint32_t i = 0; i < n; i++)
{
PRINT = 1;
for(uint32_t ii = i + 1; ii < n; ii++)
{
if(arr[i] == arr[ii] )
{
mem[count_m++] = arr[i]; // если совпало - запоминаем
PRINT = 0;
}
for(uint32_t j = 0; j <= count_m; j++)
{
if(arr[i] == mem[j]) //проверяем память
PRINT = 0;
}
}
if(PRINT)
{
// printf(" %d", arr[i]);
arr[res++] = arr[i]; // складываем результат
} // в тот же массив
}
clock_t end = clock();
//----------------------------- финиш -----------------
double elapsed_ms = ((double)(end - start) / CLOCKS_PER_SEC) * 1000.0;
printf(" Время выполнения: %.2f мс\n", elapsed_ms);
printf("\n Не повторяющихся значений res = %d\n", res);
printf("\n Печатаем каждое тысячное значение...");
for(uint32_t i = 0; i < res; i++)
{
if(!((i + 1) % 1000))
printf(" %d ", arr[i]);
if(!(i % 8000))
printf("\n");
}
return 0;
}