#include <iostream>
#include <thread>
#include <vector>
int countFactors (long l) { return 0; }
void thrMain(const std::vector<long>& list, std::vector<int>& result,
const int startInd, const int endInd)
{
for (int i = startInd; (i < endInd); i++)
{
result[i] = countFactors(list[i]);
}
}
std::vector<int> getFactorCount(const std::vector<long>& numList, const int thrCount)
{
// First allocate the return vector
const int listSize = numList.size();
const int count = (listSize / thrCount) + 1;
std::vector<std::thread> thrList; // List of threads
// Store factorial counts
std::vector<int> factCounts(numList.size());
for (int start = 0, thr = 0; (thr < thrCount); thr++, start += count) {
int end = std::max(listSize, (start + count));
thrList.push_back(std::thread(thrMain, std::ref(numList),
std::ref(factCounts), start, end));
}
for (auto& t : thrList) {
t.join();
}
// Return the result back
return factCounts;
}
int main () {}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dGhyZWFkPgojaW5jbHVkZSA8dmVjdG9yPgoKaW50IGNvdW50RmFjdG9ycyAobG9uZyBsKSB7IHJldHVybiAwOyB9Cgp2b2lkIHRock1haW4oY29uc3Qgc3RkOjp2ZWN0b3I8bG9uZz4mIGxpc3QsIHN0ZDo6dmVjdG9yPGludD4mIHJlc3VsdCwKICAgIGNvbnN0IGludCBzdGFydEluZCwgY29uc3QgaW50IGVuZEluZCkKewogICBmb3IgKGludCBpID0gc3RhcnRJbmQ7IChpIDwgZW5kSW5kKTsgaSsrKQogICB7CiAgICAgICByZXN1bHRbaV0gPSBjb3VudEZhY3RvcnMobGlzdFtpXSk7CiAgIH0KfQoKc3RkOjp2ZWN0b3I8aW50PiBnZXRGYWN0b3JDb3VudChjb25zdCBzdGQ6OnZlY3Rvcjxsb25nPiYgbnVtTGlzdCwgY29uc3QgaW50IHRockNvdW50KQp7CiAgIC8vIEZpcnN0IGFsbG9jYXRlIHRoZSByZXR1cm4gdmVjdG9yCiAgIGNvbnN0IGludCBsaXN0U2l6ZSA9IG51bUxpc3Quc2l6ZSgpOwogICBjb25zdCBpbnQgY291bnQgPSAobGlzdFNpemUgLyB0aHJDb3VudCkgKyAxOwogICBzdGQ6OnZlY3RvcjxzdGQ6OnRocmVhZD4gdGhyTGlzdDsgIC8vIExpc3Qgb2YgdGhyZWFkcwogICAvLyBTdG9yZSBmYWN0b3JpYWwgY291bnRzCiAgIHN0ZDo6dmVjdG9yPGludD4gZmFjdENvdW50cyhudW1MaXN0LnNpemUoKSk7CiAgIGZvciAoaW50IHN0YXJ0ID0gMCwgdGhyID0gMDsgKHRociA8IHRockNvdW50KTsgdGhyKyssIHN0YXJ0ICs9IGNvdW50KSB7CiAgICAgICBpbnQgZW5kID0gc3RkOjptYXgobGlzdFNpemUsIChzdGFydCArIGNvdW50KSk7CiAgICAgICB0aHJMaXN0LnB1c2hfYmFjayhzdGQ6OnRocmVhZCh0aHJNYWluLCBzdGQ6OnJlZihudW1MaXN0KSwgCiAgICAgICAgICAgIHN0ZDo6cmVmKGZhY3RDb3VudHMpLCBzdGFydCwgZW5kKSk7CiAgIH0KICAgZm9yIChhdXRvJiB0IDogdGhyTGlzdCkgewogICAgICAgdC5qb2luKCk7CiAgIH0KICAgLy8gUmV0dXJuIHRoZSByZXN1bHQgYmFjawogICByZXR1cm4gZmFjdENvdW50czsKfQoKaW50IG1haW4gKCkge30=