int main(){
int tracker = 1;
int n = 5000;
int skip;
int start = 0;
//4999 elements long
std::vector<int> k = {1819, 1289, 1273, 1097, 1125, 1267, 1894, 1252, 1657, 1521, 1072, 1738, 1381, 1467, 1698, 1630, 1761, 1803, 1160, 1082, 1977, 1165, 1088, 1038, 1753, 1112, 1503, 1723, 1890, 1810, 1357, 1189, 1126, 1868, 1710, 1806,...}
std::vector<int> main(5000);
std::iota(std::begin(main), std::end(main), 1);
for (int i = 1; i < n ; ++i) {
skip = k[0];
for (int j = start; tracker <= skip; ++j) {
if ((j - (main.size() - 1) == 0) && (tracker < skip)){
tracker++;
j = -1;
}
else if (tracker == skip){
main.erase(main.begin() + j);
k.erase(k.begin());
start = j;
tracker++;
} else {
tracker++;
}
}
tracker = 1;
}
std::cout << main[0];
return 0;
}
The program works for short vector but doesn't for long vectors. This program is about removing a certain element from the vector until only one element is left according to the numbers of element to skip, that is k[0].
User contributions licensed under CC BY-SA 3.0