diff --git a/aoc5.cpp b/aoc5.cpp index ed94988..3b21bc3 100644 --- a/aoc5.cpp +++ b/aoc5.cpp @@ -99,17 +99,18 @@ int main() { omp_set_num_threads(8); -//#pragma omp parallel for +#pragma omp parallel for for (int r = 0; r < num_ranges; r++) { Numero min_loc = UINT32_MAX; Numero start = seeds[r * 2]; Numero end = start + seeds[r * 2 + 1]; - for (Numero seed = start; seed < end; ++seed) { + Numero skip = 0; + for (Numero seed = start; seed < end; seed += std::max(1U, skip)) { Numero find_what = seed; - Numero skip = end - start; + skip = end - start; for (int i = 0; i < 7; ++i) { @@ -124,6 +125,7 @@ int main() { } } + skip = 0; } min_loc = std::min(min_loc, find_what); @@ -131,7 +133,7 @@ int main() { progress[r] = (float)(seed - start) / (float)(end - start) * 100.0f; //printf("r %d/%d seed %llu (%.2f%%) min_loc %llu\n", r + 1, num_ranges, seed, (float)(seed - start) / (float)(end - start) * 100.0f, min_loc); - seed += skip - 1; + //seed += skip; } progress[r] = 100;