Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <time.h>
- #define size 1000000
- int main() {
- srand(time(NULL));
- int * arr = calloc(size, sizeof(int));
- int * arr_repeat = calloc(size, sizeof(int));
- for(int i = 0; i < size; i++)
- arr[i] = rand() % 2;
- //tutaj węgiel nie chcialo mi sie myslec, czy to przejdzie dla wszystkich wiec, pierwsze 11 jest osobno
- arr_repeat[0] = 0;
- for(int i = 1; i <= 10; i++) {
- for(int j = 0; j < i; j++) {
- if(arr[j] == arr[i])
- arr_repeat[i]++;
- }
- }
- //teraz dla pozostałych - dzieki temu bedziemy mieli 2 sprawdzenia zamiast 10 dla kazdej wartosci
- for(int i = 11; i < size; i++) {
- //jesli poprzedni bit taki sam
- if(arr[i] == arr[i-1]) {
- arr_repeat[i] = arr_repeat[i-1] + 1;
- //ale sprawdzmy co bylo 11 bitow wczesniej
- if(arr[i] == arr[i-11])
- arr_repeat[i]--;
- }
- //poprzedni bit inny
- else {
- arr_repeat[i] = 10 - arr_repeat[i-1];
- //jak wyzej
- if(arr[i] == arr[i-11])
- arr_repeat[i]--;
- }
- }
- for(int k = 0; k < 20; k++) {
- printf("%d : %d - %d\n", k, arr[k], arr_repeat[k]);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement